ZGlmZiAtLWdpdCBhL0ZpbGVsaXN0IGIvRmlsZWxpc3QKaW5kZXggMjExYjQ4Ny4uYzYyMWY4YyAxMDA2NDQKLS0tIGEvRmlsZWxpc3QKKysrIGIvRmlsZWxpc3QKQEAgLTM3LDggKzM3LDYgQEAKIAkJc3JjL2V4X2RvY21kLmMgXAogCQlzcmMvZXhfZXZhbC5jIFwKIAkJc3JjL2V4X2dldGxuLmMgXAotCQlzcmMvZmFyc2kuYyBcCi0JCXNyYy9mYXJzaS5oIFwKIAkJc3JjL2ZlYXR1cmUuaCBcCiAJCXNyYy9maWxlaW8uYyBcCiAJCXNyYy9maW5kZmlsZS5jIFwKQEAgLTE2OSw3ICsxNjcsNiBAQAogCQlzcmMvcHJvdG8vZXhfZG9jbWQucHJvIFwKIAkJc3JjL3Byb3RvL2V4X2V2YWwucHJvIFwKIAkJc3JjL3Byb3RvL2V4X2dldGxuLnBybyBcCi0JCXNyYy9wcm90by9mYXJzaS5wcm8gXAogCQlzcmMvcHJvdG8vZmlsZWlvLnBybyBcCiAJCXNyYy9wcm90by9maW5kZmlsZS5wcm8gXAogCQlzcmMvcHJvdG8vZm9sZC5wcm8gXApAQCAtODM3LDggKzgzNCw2IEBACiAJCSQoU1JDX0VYVFJBKSBcCiAJCVJFQURNRV9leHRyYS50eHQgXAogCQlzcmMvVmlzVmltL1Zpc1ZpbS5kbGwgXAotCQlmYXJzaS9SRUFETUUudHh0IFwKLQkJZmFyc2kvZm9udHMvKi9mYXItKiBcCiAJCXJ1bnRpbWUvdmltbG9nby54cG0gXAogCQlzcmMvdGVlL01ha2VmaWxlIFwKIAkJc3JjL3RlZS9NYWtlX212Yy5tYWsgXApkaWZmIC0tZ2l0IGEvZmFyc2kvUkVBRE1FLnR4dCBiL2ZhcnNpL1JFQURNRS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNjEyOWYuLjAwMDAwMDAKLS0tIGEvZmFyc2kvUkVBRE1FLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotRm9yIGluZm9ybWF0aW9uIGFib3V0IGluc3RhbGxhdGlvbiBvZiBGYXJzaSBmb250cyBhbmQgVmltIHVzYWdlIGluIEZhcnNpIG1vZGUsCi1yZWZlciB0byB0aGUgRmFyc2kgaGVscCBmaWxlIGJ5IHR5cGluZyAiOmhlbHAgZmFyc2kiIGluIFZpbS4KZGlmZiAtLWdpdCBhL2ZhcnNpL2ZvbnRzL0RPUy9mYXItYTAxLmNvbSBiL2ZhcnNpL2ZvbnRzL0RPUy9mYXItYTAxLmNvbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZWJkMDZjYS4uMDAwMDAwMAotLS0gYS9mYXJzaS9mb250cy9ET1MvZmFyLWEwMS5jb20KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9mYXJzaS9mb250cy9TdW5Pcy9mYXItYTAxLmZiIGIvZmFyc2kvZm9udHMvU3VuT3MvZmFyLWEwMS5mYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM1M2Y4NS4uMDAwMDAwMAotLS0gYS9mYXJzaS9mb250cy9TdW5Pcy9mYXItYTAxLmZiCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZmFyc2kvZm9udHMvVU5JWHMvZmFyLWEwMS5mMTYgYi9mYXJzaS9mb250cy9VTklYcy9mYXItYTAxLmYxNgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcxZWIzYS4uMDAwMDAwMAotLS0gYS9mYXJzaS9mb250cy9VTklYcy9mYXItYTAxLmYxNgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2ZhcnNpL2ZvbnRzL1VOSVhzL2Zhci1hMDEucGNmLlogYi9mYXJzaS9mb250cy9VTklYcy9mYXItYTAxLnBjZi5aCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGU0NDYwLi4wMDAwMDAwCi0tLSBhL2ZhcnNpL2ZvbnRzL1VOSVhzL2Zhci1hMDEucGNmLloKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9mYXJzaS9mb250cy9VTklYcy9mYXItYTAxLnBjZi5neiBiL2ZhcnNpL2ZvbnRzL1VOSVhzL2Zhci1hMDEucGNmLmd6CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjZmYTlkLi4wMDAwMDAwCi0tLSBhL2ZhcnNpL2ZvbnRzL1VOSVhzL2Zhci1hMDEucGNmLmd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZmFyc2kvZm9udHMvV0lORE9XUy9mYXItYTAxLmZvbiBiL2ZhcnNpL2ZvbnRzL1dJTkRPV1MvZmFyLWEwMS5mb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMjEwOTcuLjAwMDAwMDAKLS0tIGEvZmFyc2kvZm9udHMvV0lORE9XUy9mYXItYTAxLmZvbgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2ZhcnNpLnR4dCBiL3J1bnRpbWUvZG9jL2ZhcnNpLnR4dAppbmRleCA0OTM3MTRlLi4yNzI5ODU5IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9mYXJzaS50eHQKKysrIGIvcnVudGltZS9kb2MvZmFyc2kudHh0CkBAIC0xLDQgKzEsNCBAQAotKmZhcnNpLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA4LjEuICBMYXN0IGNoYW5nZTogMjAxNSBBdWcgMjkKKypmYXJzaS50eHQqICAgICBGb3IgVmltIHZlcnNpb24gOC4xLiAgTGFzdCBjaGFuZ2U6IDIwMTkgRmViIDE2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IE1vcnRhemEgR2hhc3NhYiBTaGlyYW4KQEAgLTksMjYxICs5LDEyIEBACiB7VmkgZG9lcyBub3QgaGF2ZSBhbnkgb2YgdGhlc2UgY29tbWFuZHN9CiAKIAkJCQkJCSpFMjcqCi1JbiBvcmRlciB0byB1c2UgcmlnaHQtdG8tbGVmdCBhbmQgRmFyc2kgbWFwcGluZyBzdXBwb3J0LCBpdCBpcyBuZWNlc3NhcnkgdG8KLWNvbXBpbGUgVmltIHdpdGggdGhlIHwrZmFyc2l8IGZlYXR1cmUuCitGYXJzaSBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQgaW4gcGF0Y2ggOC4xLjA5MzIuICBBdCB0aGF0IHRpbWUgaXQgd2FzCitvdXRkYXRlZCBhbmQgdW51c2VkLgogCi1UaGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1hZGUgYnkgTW9ydGF6YSBHLiBTaGlyYW4gPHNoaXJhbkBqcHMubmV0PgotCi0KLUludHJvZHVjdGlvbgotLS0tLS0tLS0tLS0tCi1JbiByaWdodC10by1sZWZ0IG9yaWVudGVkIGZpbGVzIHRoZSBjaGFyYWN0ZXJzIGFwcGVhciBvbiB0aGUgc2NyZWVuIGZyb20gcmlnaHQKLXRvIGxlZnQuICBUaGlzIGtpbmQgb2YgZmlsZSBpcyBtb3N0IHVzZWZ1bCB3aGVuIHdyaXRpbmcgRmFyc2kgZG9jdW1lbnRzLAotY29tcG9zaW5nIGZheGVzIG9yIHdyaXRpbmcgRmFyc2kgbWVtb3MuCi0KLVRoZSBjb21tYW5kcywgcHJvbXB0cyBhbmQgaGVscCBmaWxlcyBhcmUgbm90IGluIEZhcnNpLCB0aGVyZWZvcmUgdGhlIHVzZXIKLWludGVyZmFjZSByZW1haW5zIHRoZSBzdGFuZGFyZCBWaSBpbnRlcmZhY2UuCi0KLQotSGlnaGxpZ2h0cwotLS0tLS0tLS0tLQotbyAgRWRpdGluZyBsZWZ0LXRvLXJpZ2h0IGZpbGVzIGFzIGluIHRoZSBvcmlnaW5hbCBWaW0sIG5vIGNoYW5nZS4KLQotbyAgVmlld2luZyBhbmQgZWRpdGluZyBmaWxlcyBpbiByaWdodC10by1sZWZ0IHdpbmRvd3MuICAgRmlsZSBvcmllbnRhdGlvbiBpcwotICAgcGVyIHdpbmRvdywgc28gaXQgaXMgcG9zc2libGUgdG8gdmlldyB0aGUgc2FtZSBmaWxlIGluIHJpZ2h0LXRvLWxlZnQgYW5kCi0gICBsZWZ0LXRvLXJpZ2h0IG1vZGVzLCBzaW11bHRhbmVvdXNseS4KLQotbyAgQ29tcGF0aWJpbGl0eSB0byB0aGUgb3JpZ2luYWwgVmltLiAgIEFsbW9zdCBhbGwgZmVhdHVyZXMgd29yayBpbgotICAgcmlnaHQtdG8tbGVmdCBtb2RlIChzZWUgYnVncyBiZWxvdykuCi0KLW8gIENoYW5naW5nIGtleWJvYXJkIG1hcHBpbmcgYW5kIHJldmVyc2UgaW5zZXJ0IG1vZGVzIHVzaW5nIGEgc2luZ2xlCi0gICBjb21tYW5kLgotCi1vICBCYWNraW5nIGZyb20gcmV2ZXJzZSBpbnNlcnQgbW9kZSB0byB0aGUgY29ycmVjdCBwbGFjZSBpbiB0aGUgZmlsZQotICAgKGlmIHBvc3NpYmxlKS4KLQotbyAgV2hpbGUgaW4gRmFyc2kgbW9kZSwgbnVtYmVycyBhcmUgZW50ZXJlZCBmcm9tIGxlZnQgdG8gcmlnaHQuICBVcG9uIGVudGVyaW5nCi0gICBhIG5vbmUgbnVtYmVyIGNoYXJhY3RlciwgdGhhdCBjaGFyYWN0ZXIgd2lsbCBiZSBpbnNlcnRlZCBqdXN0IGludG8gdGhlCi0gICBsZWZ0IG9mIHRoZSBsYXN0IG51bWJlci4KLQotbyAgTm8gc3BlY2lhbCB0ZXJtaW5hbCB3aXRoIHJpZ2h0LXRvLWxlZnQgY2FwYWJpbGl0aWVzIGlzIHJlcXVpcmVkLiAgVGhlCi0gICByaWdodC10by1sZWZ0IGNoYW5nZXMgYXJlIGNvbXBsZXRlbHkgaGFyZHdhcmUgaW5kZXBlbmRlbnQuICBPbmx5Ci0gICBGYXJzaSBmb250IGlzIG5lY2Vzc2FyeS4KLQotbyAgRmFyc2kga2V5bWFwcGluZyBvbiB0aGUgY29tbWFuZCBsaW5lIGluIHJldmVyc2UgaW5zZXJ0IG1vZGUuCi0KLW8gIFRvZ2dsaW5nIGJldHdlZW4gbGVmdC10by1yaWdodCBhbmQgcmlnaHQtdG8tbGVmdCB2aWEgRjggZnVuY3Rpb24ga2V5LgotCi1vICBUb2dnbGluZyBiZXR3ZWVuIEZhcnNpIElTSVItMzM0MiBzdGFuZGFyZCBlbmNvZGluZyBhbmQgVmltIEZhcnNpIHZpYSBGOQotICAgZnVuY3Rpb24ga2V5LiAgU2luY2UgdGhpcyBtYWtlcyBzZW5zZSBvbmx5IGZvciB0aGUgdGV4dCB3cml0dGVuIGluCi0gICByaWdodC10by1sZWZ0IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgYWxzbyBzdXBwb3J0ZWQgb25seSBpbiByaWdodC10by1sZWZ0Ci0gICBtb2RlLgotCi1GYXJzaSBGb250cwkJCQkJKmZhcnNpLWZvbnRzKgotLS0tLS0tLS0tLS0KLQotVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgZm91bmQgaW4gdGhlIHN1YmRpcmVjdG9yaWVzIG9mIHRoZSAnJFZJTS9mYXJzaS9mb250cycKLWRpcmVjdG9yeToKLQotICAgKyAgZmFyLWEwMS5wY2YgICAgWCBXaW5kb3dzIGZvbnRzIGZvciBVbml4IGluY2x1ZGluZyBMaW51eCBzeXN0ZW1zCi0gICArICBmYXItYTAxLmJmICAgICBYIFdpbmRvd3MgZm9udHMgZm9yIFN1bk9TCi0gICArICBmYXItYTAxLmYxNiAgICBhIHNjcmVlbiBmb250cyBmb3IgVW5peCBpbmNsdWRpbmcgTGludXggc3lzdGVtcwotICAgKyAgZmFyLWEwMS5mb24gICAgYSBtb25vc3BhY2VkIGZvbnRzIGZvciBXaW5kb3dzIE5ULzk1Lzk4Ci0gICArICBmYXItYTAxLmNvbSAgICBhIHNjcmVlbiBmb250cyBmb3IgRE9TCi0KLQotRm9udCBJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tCi0KLW8gIEluc3RhbGxhdGlvbiBvZiBmb250cyBmb3IgTVMgV2luZG93IHN5c3RlbXMgKE5ULzk1Lzk4KQotCi0gICBGcm9tICdDb250cm9sIFBhbmVsJyBmb2xkZXIsIHN0YXJ0IHRoZSAnRm9udHMnIHByb2dyYW0uICBUaGVuIGZyb20gJ2ZpbGUnCi0gICBtZW51IGl0ZW0gc2VsZWN0ICdJbnN0YWxsIE5ldyBGb250cyAuLi4nLiAgQnJvd3NlIGFuZCBzZWxlY3QgdGhlCi0gICAnZmFyLWEwMS5mb24nLCB0aGVuIGZvbGxvdyB0aGUgaW5zdGFsbGF0aW9uIGd1aWRlLgotICAgTk9URTogc2V2ZXJhbCBwZW9wbGUgaGF2ZSByZXBvcnRlZCB0aGF0IHRoaXMgZG9lcyBub3Qgd29yay4gIFRoZSBzb2x1dGlvbgotICAgaXMgdW5rbm93bi4KLQotbyAgSW5zdGFsbGF0aW9uIG9mIGZvbnRzIGZvciBYIFdpbmRvdyBzeXN0ZW1zIChVbml4L0xpbnV4KQotCi0gICBEZXBlbmRpbmcgb24geW91ciBzeXN0ZW0sIGNvcHkgZmFyLWEwMS5wY2YuWiBvciBmYXItYTAxLnBjZi5neiBpbnRvIGEKLSAgIGRpcmVjdG9yeSBvZiB5b3VyIGNob2ljZS4gIENoYW5nZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIEZhcnNpCi0gICBmb250cyBhbmQgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgotCi0gICA+ICBta2ZvbnRkaXIKLSAgID4gIHhzZXQgK2ZwIHBhdGhfbmFtZV9vZl9mYXJzaV9mb250c19kaXJlY3RvcnkKLQotbyAgSW5zdGFsbGF0aW9uIG9mIGZvbnRzIGZvciBYIFdpbmRvdyBzeXN0ZW1zIChTdW5PUykKLQotICAgQ29weSBmYXItYTAxLmJmIGZvbnQgaW50byBhIGRpcmVjdG9yeSBvZiB5b3VyIGNob2ljZS4KLSAgIENoYW5nZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZhci1hMDEuZmIgZm9udHMgYW5kCi0gICBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0KLSAgID4gIGZsZGZhbWlseQotICAgPiAgeHNldCArZnAgcGF0aF9uYW1lX29mX2ZvbnRzX2RpcmVjdG9yeQotCi1vICBJbnN0YWxsYXRpb24gb2YgQVNDSUkgc2NyZWVuIGZvbnRzIChVbml4L0xpbnV4KQotCi0gICBGb3IgTGludXggc3lzdGVtLCBjb3B5IHRoZSBmYXItYTAxLmYxNiBmb250cyBpbnRvIC91c3IvbGliL2tiZC9jb25zb2xlZm9udHMKLSAgIGRpcmVjdG9yeSBhbmQgZXhlY3V0ZSB0aGUgc2V0Zm9udCBwcm9ncmFtIGFzICJzZXRmb250IGZhci1hMDEuZjE2Ii4gIEZvcgotICAgb3RoZXIgc3lzdGVtcyAoZS5nLiBTQ08gVW5peCksIHBsZWFzZSByZWZlciB0byB0aGUgZm9udHMgaW5zdGFsbGF0aW9uCi0gICBzZWN0aW9uIG9mIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0aW9uIG1hbnVhbHMuCi0KLW8gIEluc3RhbGxhdGlvbiBvZiBBU0NJSSBzY3JlZW4gZm9udHMgKERPUykKLQotICAgQWZ0ZXIgc3lzdGVtIHBvd2VyIG9uLCBwcmlvciB0byB0aGUgZmlyc3QgdXNlIG9mIFZpbSwgdXBsb2FkIHRoZSBGYXJzaQotICAgZm9udHMgYnkgZXhlY3V0aW5nIHRoZSBmYXItYTAxLmNvbSBmb250IHVwbG9hZGluZyBwcm9ncmFtLgotCi0KLVVzYWdlCi0tLS0tLQotUHJpb3IgdG8gc3RhcnRpbmcgVmltLCB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggVmltIGNhbiBydW4gaW4gRmFyc2kgbW9kZSwKLW11c3QgYmUgc2V0LiAgSW4gYWRkaXRpb24gdG8gaW5zdGFsbGF0aW9uIG9mIEZhcnNpIGZvbnRzLCBmb2xsb3dpbmcgcG9pbnRzCi1yZWZlciB0byBzb21lIG9mIHRoZSBzeXN0ZW0gZW52aXJvbm1lbnRzLCB3aGljaCB5b3UgbWF5IG5lZWQgdG8gc2V0OgotS2V5IGNvZGUgbWFwcGluZywgbG9hZGluZyBncmFwaGljIGNhcmQgaW4gQVNDSUkgc2NyZWVuIG1vZGUsIHNldHRpbmcgdGhlIElPCi1kcml2ZXIgaW4gOCBiaXQgY2xlYW4gbW9kZSAuLi4gLgotCi1vICBTZXR0aW5nIHRoZSBGYXJzaSBmb250cwotCi0gICArICBGb3IgVmltIEdVSSBzZXQgdGhlICdndWlmb250JyB0byBmYXItYTAxLiAgVGhpcyBpcyBkb25lIGJ5IGVudGVyaW5nCi0gICAgICAnOnNldCBndWlmb250PWZhci1hMDEnIGluIHRoZSBWaW0gd2luZG93LgotCi0gICAgICBZb3UgY2FuIGhhdmUgJ2d1aWZvbnQnIHNldCB0byBmYXItYTAxIGJ5IFZpbSBkdXJpbmcgdGhlIFZpbSBzdGFydHVwCi0gICAgICBieSBhcHBlbmRpbmcgdGhlICc6c2V0IGd1aWZvbnQ9ZmFyLWEwMScgaW50byB5b3VyIC52aW1yYyBmaWxlCi0gICAgICAoaW4gY2FzZSBvZiBOVC85NS85OCBwbGF0Zm9ybXMgX3ZpbXJjKS4KLQotICAgICAgVW5kZXIgdGhlIFggV2luZG93IGVudmlyb25tZW50LCB5b3UgY2FuIGFsc28gc3RhcnQgVmltIHdpdGggdGhlCi0gICAgICAnLWZuIGZhci1hMDEnIG9wdGlvbi4KLQotICAgKyAgRm9yIFZpbSB3aXRoaW4gYSB4dGVybSwgc3RhcnQgYSB4dGVybSB3aXRoIHRoZSBGYXJzaSBmb250cyAoZS5nLgotICAgICAga3Rlcm0gLWZuIGZhci1hMDEpLiAgVGhlbiBzdGFydCBWaW0gaW5zaWRlIHRoZSBrdGVybS4KLQotICAgKyAgRm9yIFZpbSB1bmRlciBET1MsIHByaW9yIHRvIHRoZSBmaXJzdCB1c2FnZSBvZiBWaW0sIHVwbG9hZCB0aGUgRmFyc2kKLSAgICAgIGZvbnRzIGJ5IGV4ZWN1dGluZyB0aGUgZmFyLWEwMS5jb20gZm9udHMgdXBsb2FkaW5nIHByb2dyYW0uCi0KLW8gIEZhcnNpIEtleW1hcHBpbmcgQWN0aXZhdGlvbgotCi0gICBUbyBhY3RpdmF0ZSB0aGUgRmFyc2kga2V5bWFwcGluZywgc2V0IGVpdGhlciAnYWx0a2V5bWFwJyBvciAnZmttYXAnLgotICAgVGhpcyBpcyBkb25lIGJ5IGVudGVyaW5nICc6c2V0IGFrbScgb3IgJzpzZXQgZmsnIGluIHRoZSBWaW0gd2luZG93LgotICAgWW91IGNhbiBoYXZlICdhbHRrZXltYXAnIG9yICdma21hcCcgc2V0IGFzIGRlZmF1bHQgYnkgYXBwZW5kaW5nICc6c2V0IGFrbScKLSAgIG9yICc6c2V0IGZrJyBpbiB5b3VyIC52aW1yYyBmaWxlIG9yIF92aW1yYyBpbiBjYXNlIG9mIE5ULzk1Lzk4IHBsYXRmb3Jtcy4KLQotICAgVG8gdHVybiBvZmYgdGhlIEZhcnNpIGtleW1hcHBpbmcgYXMgYSBkZWZhdWx0IHNlY29uZCBsYW5ndWFnZSBrZXltYXBwaW5nLAotICAgcmVzZXQgdGhlICdhbHRrZXltYXAnIGJ5IGVudGVyaW5nICc6c2V0IG5vYWttJy4KLQotbyAgcmlnaHQtdG8tbGVmdCBGYXJzaSBNb2RlCi0KLSAgIEJ5IGRlZmF1bHQgVmltIHN0YXJ0cyBpbiBMZWZ0LXRvLXJpZ2h0IG1vZGUuICBGb2xsb3dpbmcgYXJlIHdheXMgdG8gY2hhbmdlCi0gICB0aGUgd2luZG93IG9yaWVudGF0aW9uOgotCi0gICArIFN0YXJ0IFZpbSB3aXRoIHRoZSAtRiBvcHRpb24gKGUuZy4gdmltIC1GIC4uLikuCi0KLSAgICsgVXNlIHRoZSBGOCBmdW5jdGlvbiBrZXkgdG8gdG9nZ2xlIGJldHdlZW4gbGVmdC10by1yaWdodCBhbmQgcmlnaHQtdG8tbGVmdC4KLQotICAgKyBXaGlsZSBpbiBMZWZ0LXRvLXJpZ2h0IG1vZGUsIGVudGVyICdzZXQgcmwnIGluIHRoZSBjb21tYW5kIGxpbmUgKCdybCcgaXMKLSAgICAgdGhlIGFiYnJldmlhdGlvbiBmb3IgcmlnaHRsZWZ0KS4KLQotICAgKyBQdXQgdGhlICdzZXQgcmwnIGxpbmUgaW4geW91ciAnLnZpbXJjJyBmaWxlIHRvIHN0YXJ0IFZpbSBpbgotICAgICByaWdodC10by1sZWZ0IG1vZGUgcGVybWFuZW50bHkuCi0KLUVuY29kaW5nCi0tLS0tLS0tLQotCi1UaGUgbGV0dGVyIGVuY29kaW5nIHVzZWQgaXMgdGhlIFZpbSBleHRlbmRlZCBJU0lSLTMzNDIgc3RhbmRhcmQgd2l0aCBhIGJ1aWx0Ci1pbiBmdW5jdGlvbiB0byBjb252ZXJ0IGJldHdlZW4gVmltIGV4dGVuZGVkIElTSVItMzM0MiBhbmQgSVNJUi0zMzQyIHN0YW5kYXJkLgotCi1Gb3IgZG9jdW1lbnQgcG9ydGFiaWxpdHkgcmVhc29ucywgdGhlIGxldHRlciBlbmNvZGluZyBpcyBrZXB0IHRoZSBzYW1lIGFjcm9zcwotZGlmZmVyZW50IHBsYXRmb3JtcyAoaS5lLiBVTklYJ3MsIE5ULzk1Lzk4LCBNUyBET1MsIC4uLikuCi0KLQotbyAgS2V5Ym9hcmQKLQotICAgKyAgQ1RSTC1fIGluIGluc2VydC9yZXBsYWNlIG1vZGVzIHRvZ2dsZXMgYmV0d2VlbiBGYXJzaShha20pL0xhdGluCi0gICAgICBtb2RlIGFzIGZvbGxvd3M6Ci0KLSAgICsgIENUUkwtXyBtb3ZlcyB0aGUgY3Vyc29yIHRvIHRoZSBlbmQgb2YgdGhlIHR5cGVkIHRleHQgaW4gZWRpdCBtb2RlLgotCi0gICArICBDVFJMLV8gaW4gY29tbWFuZCBtb2RlIG9ubHkgdG9nZ2xlcyBrZXlib2FyZCBtYXBwaW5nIGJldHdlZW4gRmFyc2koYWttKS8KLSAgICAgIExhdGluLiAgVGhlIEZhcnNpIHRleHQgaXMgdGhlbiBlbnRlcmVkIGluIHJldmVyc2UgaW5zZXJ0IG1vZGUuCi0KLSAgICsgIEY4IC0gVG9nZ2xlcyBiZXR3ZWVuIGxlZnQtdG8tcmlnaHQgYW5kIHJpZ2h0LXRvLWxlZnQuCi0KLSAgICsgIEY5IC0gVG9nZ2xlcyB0aGUgZW5jb2RpbmcgYmV0d2VlbiBJU0lSLTMzNDIgc3RhbmRhcmQgYW5kIFZpbSBleHRlbmRlZAotICAgICAgSVNJUi0zMzQyIChzdXBwb3J0ZWQgb25seSBpbiByaWdodC10by1sZWZ0IG1vZGUpLgotCi0gICArICBLZXlib2FyZCBtYXBwaW5nIGlzIGJhc2VkIG9uIHRoZSBJcmFuaWFuIElTSVJJLTI5MDEgc3RhbmRhcmQuCi0gICAgICBGb2xsb3dpbmcgdGFibGUgc2hvd3MgdGhlIGtleWJvYXJkIG1hcHBpbmcgd2hpbGUgRmFyc2koYWttKSBtb2RlIHNldDoKLQotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlgICAxICAyICAzICA0ICA1ICA2ICA3ICA4ICA5ICAwICAtICA9Ci0JoiAgsSAgsiAgsyAgtCAgtSAgtiAgtyAguCAguSAgsCAgrSAgvQotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQl+ICAhICBAICAjICAkICAlICBeICAmICAqICAoICApICBfICArCi0JfiAgoyAgpyAgriAgpCAgpSAgqiAgrCAg6CAgqCAgqSAg6SAgqwotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlxICB3ICBlICByICB0ICB6ICB1ICBpICBvICBwICBbICBdCi0J0yAg0iAgxiAg2SAg2CAg1SAg1iAg4CAgyiAgySAgxyAgiAotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlRICBXICBFICBSICBUICBaICBVICBJICBPICBQICB7ICB9Ci0J9yAg9SAg9CAg8yAg8iAg/SAg8CAg9iAgWyAgXSAgeyAgfQotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlhICBzICBkICBmICBnICBoICBqICBrICBsICA7ICAnICBcCi0J0SAg0CAg4SAgwyAg3CAgwSAgxSAg3iAg3SAg2iAg2yAg6wotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlBICBTICBEICBGICBHICBIICBKICBLICBMICA6ICAiICB8Ci0J+SAg+6Ag/iAg+iAg+CAgwCAg/CAg5iAg5yAguiAguyAg6gotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQk8ICB5ICB4ICBjICB2ICBiICBuICBtICAsICAuICAvCi0JviAg1yAg1CAgziAgzSAgzCAgyyAgxCAg3yAgpiAgrwotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQk+ICBZICBYICBDICBWICBCICBOICBNICA8ICA+ICA/Ci0JvCAg8SAg1CAgzyAgzSAgoSAgyyAgwiAgviAgvCAgvwotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTm90ZToKLQmhICBzdGFuZHMgZm9yIEZhcnNpIFBTUCAoYnJlYWsgd2l0aG91dCBzcGFjZSkKLQotCaIgIHN0YW5kcyBmb3IgRmFyc2kgUENOIChmb3IgSEFNWkUgYXR0cmlidXRlKQotCi1SZXN0cmljdGlvbnMKLS0tLS0tLS0tLS0tLQotCi1vICBJbiBpbnNlcnQvcmVwbGFjZSBtb2RlIGFuZCBma21hcCAoRmFyc2kgbW9kZSkgc2V0LCBDVFJMLUIgaXMgbm90Ci0gICBzdXBwb3J0ZWQuCi0KLW8gIElmIHlvdSBjaGFuZ2UgdGhlIGNoYXJhY3RlciBtYXBwaW5nIGJldHdlZW4gTGF0aW4vRmFyc2ksIHRoZSByZWRvIGJ1ZmZlcgotICAgd2lsbCBiZSByZXNldCAoZW1wdGllZCkuICBUaGF0IGlzLCByZWRvIGlzIHZhbGlkIGFuZCB3aWxsIGZ1bmN0aW9uICh1c2luZwotICAgJy4nKSBvbmx5IHdpdGhpbiB0aGUgbW9kZSB5b3UgYXJlIGluLgotCi1vICBXaGlsZSBudW1iZXJzIGFyZSBlbnRlcmVkIGluIEZhcnNpIG1vZGUsIHRoZSByZWRvIGJ1ZmZlciB3aWxsIGJlIHJlc2V0Ci0gICAoZW1wdGllZCkuICBUaGF0IGlzLCB5b3UgY2Fubm90IHJlZG8gdGhlIGxhc3QgY2hhbmdlcyAodXNpbmcgJy4nKSBhZnRlcgotICAgZW50ZXJpbmcgbnVtYmVycy4KLQotbyAgV2hpbGUgaW4gbGVmdC10by1yaWdodCBtb2RlIGFuZCBGYXJzaSBtb2RlIHNldCwgQ1RSTC1SIGlzIG5vdCBzdXBwb3J0ZWQuCi0KLW8gIFdoaWxlIGluIHJpZ2h0LXRvLWxlZnQgbW9kZSwgdGhlIHNlYXJjaCBvbiAnTGF0aW4nIHBhdHRlcm4gZG9lcyBub3Qgd29yaywKLSAgIGV4Y2VwdCBpZiB5b3UgZW50ZXIgdGhlIExhdGluIHNlYXJjaCBwYXR0ZXJuIGluIHJldmVyc2UuCi0KLW8gIEluIGNvbW1hbmQgbW9kZSB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBlbnRlcmluZyBudW1iZXJzIGZyb20gbGVmdAotICAgdG8gcmlnaHQgYW5kIGFsc28gZm9yIHRoZSBzYWtlIG9mIGZsZXhpYmlsaXR5IHRoZSBrZXltYXBwaW5nIGxvZ2ljIGlzCi0gICByZXN0cmljdGVkLgotCi1vICBVbmRlciB0aGUgWCBXaW5kb3cgZW52aXJvbm1lbnQsIGlmIHlvdSB3YW50IHRvIHJ1biBWaW0gd2l0aGluIGEgeHRlcm0KLSAgIHRlcm1pbmFsIGVtdWxhdG9yIGFuZCBGYXJzaSBtb2RlIHNldCwgeW91IG5lZWQgdG8gaGF2ZSBhbiBBTlNJIGNvbXBhdGlibGUKLSAgIHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSBsZXR0ZXIgY29kZXMgYWJvdmUgMTI4IGRlY2ltYWwKLSAgIGhhdmUgY2VydGFpbiBtZWFuaW5ncyBpbiB0aGUgc3RhbmRhcmQgeHRlcm0gdGVybWluYWwgZW11bGF0b3IuCi0KLSAgIE5vdGU6IFVuZGVyIFggV2luZG93IGVudmlyb25tZW50LCBWaW0gR1VJIHdvcmtzIGZpbmUgaW4gRmFyc2kgbW9kZS4KLQkgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIG9mIGFueSB4dGVybSB0ZXJtaW5hbCBlbXVsYXRvci4KLQotCi1CdWdzCi0tLS0tCi1XaGlsZSBpbiBpbnNlcnQvcmVwbGFjZSBhbmQgRmFyc2kgbW9kZSBzZXQsIGlmIHlvdSByZXBlYXRlZGx5IGNoYW5nZSB0aGUKLWN1cnNvciBwb3NpdGlvbiAodmlhIGN1cnNvciBtb3ZlbWVudCkgYW5kIGVudGVyIG5ldyB0ZXh0IGFuZCB0aGVuIHRyeSB0byB1bmRvCi10aGUgbGFzdCBjaGFuZ2UsIHRoZSB1bmRvIHdpbGwgbGFnIG9uZSBjaGFuZ2UgYmVoaW5kLiAgQnV0IGFzIHlvdSBjb250aW51ZSB0bwotdW5kbywgeW91IHdpbGwgcmVhY2ggdGhlIG9yaWdpbmFsIGxpbmUgb2YgdGV4dC4gIFlvdSBjYW4gYWxzbyB1c2UgVSB0byB1bmRvIGFsbAotY2hhbmdlcyBtYWRlIGluIHRoZSBjdXJyZW50IGxpbmUuCitJZiB5b3Ugd291bGQgbGlrZSB0byBicmluZyBGYXJzaSBzdXBwb3J0IGJhY2ssIHBsZWFzZSBoYXZlIGEgbG9vayBhdCB0aGUgb2xkCitGYXJzaSBjb2RlLCBhcyBpdCB3YXMgcHJlc2VudCBhdCB0aGUgOC4xIHJlbGVhc2UuICBJdCBzaG91bGQgYmUgbWVyZ2VkIHdpdGgKK0FyYWJpYyBzdXBwb3J0IHVzaW5nIHRoZSBVbmljb2RlIGNoYXJhY3RlciBzZXQuCiAKLUZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWdzIHJlZmVyIHRvIHJpbGVmdC50eHQuCiAKICB2aW06dHc9Nzg6dHM9ODpub2V0OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0IGIvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKaW5kZXggM2I2MmMwZi4uZTY2NGM5NiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKQEAgLTY4OCwxMyArNjg4LDggQEAKIAkJCXtub3QgaW4gVml9CiAJCQl7b25seSBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRoIHRoZSB8K2ZhcnNpfAogCQkJZmVhdHVyZX0KLQlXaGVuIG9uLCB0aGUgc2Vjb25kIGxhbmd1YWdlIGlzIEZhcnNpLiAgSW4gZWRpdGluZyBtb2RlIENUUkwtXyB0b2dnbGVzCi0JdGhlIGtleWJvYXJkIG1hcCBiZXR3ZWVuIEZhcnNpIGFuZCBFbmdsaXNoLCB3aGVuICdhbGxvd3Jldmlucycgc2V0LgotCi0JV2hlbiBvZmYsIHRoZSBrZXlib2FyZCBtYXAgdG9nZ2xlcyBiZXR3ZWVuIEhlYnJldyBhbmQgRW5nbGlzaC4gIFRoaXMKLQlpcyB1c2VmdWwgdG8gc3RhcnQgdGhlIFZpbSBpbiBuYXRpdmUgbW9kZSBpLmUuIEVuZ2xpc2ggKGxlZnQtdG8tcmlnaHQKLQltb2RlKSBhbmQgaGF2ZSBkZWZhdWx0IHNlY29uZCBsYW5ndWFnZSBGYXJzaSBvciBIZWJyZXcgKHJpZ2h0LXRvLWxlZnQKLQltb2RlKS4gIFNlZSB8ZmFyc2kudHh0fC4KKwlUaGlzIG9wdGlvbiB3YXMgZm9yIHVzaW5nIEZhcnNpLCB3aGljaCBoYXMgYmVlbiByZW1vdmVkLiAgU2VlCisJfGZhcnNpLnR4dHwuCiAKIAkJCQkJCSonYW1iaXdpZHRoJyogKidhbWJ3JyoKICdhbWJpd2lkdGgnICdhbWJ3JwlzdHJpbmcgKGRlZmF1bHQ6ICJzaW5nbGUiKQpAQCAtMzMwMSw5ICszMjk2LDggQEAKIAkJCXtub3QgaW4gVml9CiAJCQl7b25seSBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRoIHRoZSB8K3JpZ2h0bGVmdHwKIAkJCWZlYXR1cmV9Ci0JV2hlbiBvbiwgdGhlIGtleWJvYXJkIGlzIG1hcHBlZCBmb3IgdGhlIEZhcnNpIGNoYXJhY3RlciBzZXQuCi0JTm9ybWFsbHkgeW91IHdvdWxkIHNldCAnYWxsb3dyZXZpbnMnIGFuZCB1c2UgQ1RSTC1fIGluIGluc2VydCBtb2RlIHRvCi0JdG9nZ2xlIHRoaXMgb3B0aW9uIHxpX0NUUkwtX3wuICBTZWUgfGZhcnNpLnR4dHwuCisJVGhpcyBvcHRpb24gd2FzIGZvciB1c2luZyBGYXJzaSwgd2hpY2ggaGFzIGJlZW4gcmVtb3ZlZC4gIFNlZQorCXxmYXJzaS50eHR8LgogCiAJCQkJCQkqJ2ZvbGRjbG9zZScqIConZmNsJyoKICdmb2xkY2xvc2UnICdmY2wnCXN0cmluZyAoZGVmYXVsdCAiIikKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3F1aWNrcmVmLnR4dCBiL3J1bnRpbWUvZG9jL3F1aWNrcmVmLnR4dAppbmRleCA3NWY0MDBmLi40YzZlMjQ5IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9xdWlja3JlZi50eHQKKysrIGIvcnVudGltZS9kb2MvcXVpY2tyZWYudHh0CkBAIC02MDAsNyArNjAwLDYgQEAKIFNob3J0IGV4cGxhbmF0aW9uIG9mIGVhY2ggb3B0aW9uOgkJKm9wdGlvbi1saXN0KgogJ2FsZXBoJwkJICAnYWwnCSAgICBBU0NJSSBjb2RlIG9mIHRoZSBsZXR0ZXIgQWxlcGggKEhlYnJldykKICdhbGxvd3JldmlucycJICAnYXJpJyAgICAgYWxsb3cgQ1RSTC1fIGluIEluc2VydCBhbmQgQ29tbWFuZC1saW5lIG1vZGUKLSdhbHRrZXltYXAnCSAgJ2FrbScgICAgIGZvciBkZWZhdWx0IHNlY29uZCBsYW5ndWFnZSAoRmFyc2kvSGVicmV3KQogJ2FtYml3aWR0aCcJICAnYW1idycgICAgd2hhdCB0byBkbyB3aXRoIFVuaWNvZGUgY2hhcnMgb2YgYW1iaWd1b3VzIHdpZHRoCiAnYW50aWFsaWFzJwkgICdhbnRpJyAgICBNYWMgT1MgWDogdXNlIHNtb290aCwgYW50aWFsaWFzZWQgZm9udHMKICdhdXRvY2hkaXInCSAgJ2FjZCcgICAgIGNoYW5nZSBkaXJlY3RvcnkgdG8gdGhlIGZpbGUgaW4gdGhlIGN1cnJlbnQgd2luZG93CkBAIC03MDAsNyArNjk5LDYgQEAKICdmaWxldHlwZScJICAnZnQnCSAgICB0eXBlIG9mIGZpbGUsIHVzZWQgZm9yIGF1dG9jb21tYW5kcwogJ2ZpbGxjaGFycycJICAnZmNzJyAgICAgY2hhcmFjdGVycyB0byB1c2UgZm9yIGRpc3BsYXlpbmcgc3BlY2lhbCBpdGVtcwogJ2ZpeGVuZG9mbGluZScJICAnZml4ZW9sJyAgbWFrZSBzdXJlIGxhc3QgbGluZSBpbiBmaWxlIGhhcyA8RU9MPgotJ2ZrbWFwJwkJICAnZmsnCSAgICBGYXJzaSBrZXlib2FyZCBtYXBwaW5nCiAnZm9sZGNsb3NlJwkgICdmY2wnICAgICBjbG9zZSBhIGZvbGQgd2hlbiB0aGUgY3Vyc29yIGxlYXZlcyBpdAogJ2ZvbGRjb2x1bW4nCSAgJ2ZkYycgICAgIHdpZHRoIG9mIHRoZSBjb2x1bW4gdXNlZCB0byBpbmRpY2F0ZSBmb2xkcwogJ2ZvbGRlbmFibGUnCSAgJ2ZlbicgICAgIHNldCB0byBkaXNwbGF5IGFsbCBmb2xkcyBvcGVuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zdGFydGluZy50eHQgYi9ydW50aW1lL2RvYy9zdGFydGluZy50eHQKaW5kZXggNjI4OWU5Yy4uOWY2NDcyNiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc3RhcnRpbmcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3N0YXJ0aW5nLnR4dApAQCAtMzIxLDkgKzMyMSw4IEBACiAJCWFuZCBleGl0cy4pICB7bm90IGluIFZpfQogCiAJCQkJCQkJKi1GKgotLUYJCUZhcnNpIG1vZGUuICBTZXRzIHRoZSAnZmttYXAnIGFuZCAncmlnaHRsZWZ0JyBvcHRpb25zIG9uLgotCQkoT25seSB3aGVuIGNvbXBpbGVkIHdpdGggfCtyaWdodGxlZnR8IGFuZCB8K2ZhcnNpfCBmZWF0dXJlcywKLQkJb3RoZXJ3aXNlIFZpbSBnaXZlcyBhbiBlcnJvciBtZXNzYWdlIGFuZCBleGl0cy4pICB7bm90IGluIFZpfQorLUYJCVRoaXMgd2FzIHVzZWQgZm9yIEZhcnNpIG1vZGUsIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQuCisJCVNlZSB8ZmFyc2kudHh0fC4KIAogCQkJCQkJCSotSCoKIC1ICQlIZWJyZXcgbW9kZS4gIFNldHMgdGhlICdoa21hcCcgYW5kICdyaWdodGxlZnQnIG9wdGlvbnMgb24uCmRpZmYgLS1naXQgYS9zcmMvTWFrZV9iYzUubWFrIGIvc3JjL01ha2VfYmM1Lm1hawppbmRleCBlYjM4ZGQ3Li4zMGZlNzI3IDEwMDY0NAotLS0gYS9zcmMvTWFrZV9iYzUubWFrCisrKyBiL3NyYy9NYWtlX2JjNS5tYWsKQEAgLTU0Miw3ICs1NDIsNiBAQAogCSQoT0JKRElSKVxleF9kb2NtZC5vYmogXAogCSQoT0JKRElSKVxleF9ldmFsLm9iaiBcCiAJJChPQkpESVIpXGV4X2dldGxuLm9iaiBcCi0JJChPQkpESVIpXGZhcnNpLm9iaiBcCiAJJChPQkpESVIpXGZpbGVpby5vYmogXAogCSQoT0JKRElSKVxmaW5kZmlsZS5vYmogXAogCSQoT0JKRElSKVxmb2xkLm9iaiBcCmRpZmYgLS1naXQgYS9zcmMvTWFrZV9jeWdfbWluZy5tYWsgYi9zcmMvTWFrZV9jeWdfbWluZy5tYWsKaW5kZXggNDhjZTM5Ny4uZjZhZTg1MyAxMDA2NDQKLS0tIGEvc3JjL01ha2VfY3lnX21pbmcubWFrCisrKyBiL3NyYy9NYWtlX2N5Z19taW5nLm1hawpAQCAtNzE0LDcgKzcxNCw2IEBACiAJJChPVVRESVIpL2V4X2RvY21kLm8gXAogCSQoT1VURElSKS9leF9ldmFsLm8gXAogCSQoT1VURElSKS9leF9nZXRsbi5vIFwKLQkkKE9VVERJUikvZmFyc2kubyBcCiAJJChPVVRESVIpL2ZpbGVpby5vIFwKIAkkKE9VVERJUikvZmluZGZpbGUubyBcCiAJJChPVVRESVIpL2ZvbGQubyBcCkBAIC0xMDA1LDcgKzEwMDQsNyBAQAogCSQoTUFLRSkgLUMgdGVlIGNsZWFuCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotSU5DTCA9CXZpbS5oIGFsbG9jLmggYXJhYmljLmggYXNjaWkuaCBleF9jbWRzLmggZmFyc2kuaCBmZWF0dXJlLmggZ2xvYmFscy5oIFwKK0lOQ0wgPQl2aW0uaCBhbGxvYy5oIGFyYWJpYy5oIGFzY2lpLmggZXhfY21kcy5oIGZlYXR1cmUuaCBnbG9iYWxzLmggXAogCWtleW1hcC5oIG1hY3Jvcy5oIG9wdGlvbi5oIG9zX2Rvcy5oIG9zX3dpbjMyLmggcHJvdG8uaCByZWdleHAuaCBcCiAJc3BlbGwuaCBzdHJ1Y3RzLmggdGVybS5oIGJldmFsLmggJChOQkRFQlVHX0lOQ0wpCiBHVUlfSU5DTCA9IGd1aS5oCmRpZmYgLS1naXQgYS9zcmMvTWFrZV9kaWNlLm1hayBiL3NyYy9NYWtlX2RpY2UubWFrCmluZGV4IGZmY2U4MDUuLjIwMjU5NzQgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlX2RpY2UubWFrCisrKyBiL3NyYy9NYWtlX2RpY2UubWFrCkBAIC00NCw3ICs0NCw2IEBACiAJZXhfZG9jbWQuYyBcCiAJZXhfZXZhbC5jIFwKIAlleF9nZXRsbi5jIFwKLQlmYXJzaS5jIFwKIAlmaWxlaW8uYyBcCiAJZmluZGZpbGUuYyBcCiAJZm9sZC5jIFwKQEAgLTEwNCw3ICsxMDMsNiBAQAogCW8vZXhfZG9jbWQubyBcCiAJby9leF9ldmFsLm8gXAogCW8vZXhfZ2V0bG4ubyBcCi0Jby9mYXJzaS5vIFwKIAlvL2ZpbGVpby5vIFwKIAlvL2ZpbmRmaWxlLm8gXAogCW8vZm9sZC5vIFwKQEAgLTIwMSw4ICsxOTksNiBAQAogCiBvL2V4X2dldGxuLm86CWV4X2dldGxuLmMgICQoU1lNUykKIAotby9mYXJzaS5vOglmYXJzaS5jICAkKFNZTVMpCi0KIG8vZmlsZWlvLm86CWZpbGVpby5jICAkKFNZTVMpCiAKIG8vZmluZGZpbGUubzoJZmluZGZpbGUuYyAgJChTWU1TKQpkaWZmIC0tZ2l0IGEvc3JjL01ha2VfaXZjLm1hayBiL3NyYy9NYWtlX2l2Yy5tYWsKaW5kZXggYTAyYmE5Ni4uMjYzNjdlMCAxMDA2NDQKLS0tIGEvc3JjL01ha2VfaXZjLm1haworKysgYi9zcmMvTWFrZV9pdmMubWFrCkBAIC0yMjgsNyArMjI4LDYgQEAKIAkiJChJTlRESVIpL2V4X2RvY21kLm9iaiIgXAogCSIkKElOVERJUikvZXhfZXZhbC5vYmoiIFwKIAkiJChJTlRESVIpL2V4X2dldGxuLm9iaiIgXAotCSIkKElOVERJUikvZmFyc2kub2JqIiBcCiAJIiQoSU5URElSKS9maWxlaW8ub2JqIiBcCiAJIiQoSU5URElSKS9maW5kZmlsZS5vYmoiIFwKIAkiJChJTlRESVIpL2ZvbGQub2JqIiBcCkBAIC00MTMsMTAgKzQxMiw2IEBACiAjIEVuZCBTb3VyY2UgRmlsZQogIyBCZWdpbiBTb3VyY2UgRmlsZQogCi1TT1VSQ0U9LlxmYXJzaS5jCi0jIEVuZCBTb3VyY2UgRmlsZQotIyBCZWdpbiBTb3VyY2UgRmlsZQotCiBTT1VSQ0U9LlxmaWxlaW8uYwogIyBFbmQgU291cmNlIEZpbGUKICMgQmVnaW4gU291cmNlIEZpbGUKZGlmZiAtLWdpdCBhL3NyYy9NYWtlX21hbngubWFrIGIvc3JjL01ha2VfbWFueC5tYWsKaW5kZXggNTMxNGE4Ni4uMmNiYzNkZiAxMDA2NDQKLS0tIGEvc3JjL01ha2VfbWFueC5tYWsKKysrIGIvc3JjL01ha2VfbWFueC5tYWsKQEAgLTU0LDcgKzU0LDYgQEAKIAlleF9kb2NtZC5jIFwKIAlleF9ldmFsLmMgXAogCWV4X2dldGxuLmMgXAotCWZhcnNpLmMgXAogCWZpbGVpby5jIFwKIAlmaW5kZmlsZS5jIFwKIAlmb2xkLmMgXApAQCAtMTE2LDcgKzExNSw2IEBACiAJb2JqL2V4X2RvY21kLm8gXAogCW9iai9leF9ldmFsLm8gXAogCW9iai9leF9nZXRsbi5vIFwKLQlvYmovZmFyc2kubyBcCiAJb2JqL2ZpbGVpby5vIFwKIAlvYmovZmluZGZpbGUubyBcCiAJb2JqL2ZvbGQubyBcCkBAIC0xNzYsNyArMTc0LDYgQEAKIAlwcm90by9leF9kb2NtZC5wcm8gXAogCXByb3RvL2V4X2V2YWwucHJvIFwKIAlwcm90by9leF9nZXRsbi5wcm8gXAotCXByb3RvL2ZhcnNpLnBybyBcCiAJcHJvdG8vZmlsZWlvLnBybyBcCiAJcHJvdG8vZmluZGZpbGUucHJvIFwKIAlwcm90by9mb2xkLnBybyBcCkBAIC0zMTcsOSArMzE0LDYgQEAKIG9iai9leF9nZXRsbi5vOglleF9nZXRsbi5jCiAJJChDQ1NZTSkgJEAgZXhfZ2V0bG4uYwogCi1vYmovZmFyc2kubzoJZmFyc2kuYwotCSQoQ0NTWU0pICRAIGZhcnNpLmMKLQogb2JqL2ZpbGVpby5vOglmaWxlaW8uYwogCSQoQ0NTWU0pICRAIGZpbGVpby5jCiAKZGlmZiAtLWdpdCBhL3NyYy9NYWtlX21vcnBoLm1hayBiL3NyYy9NYWtlX21vcnBoLm1hawppbmRleCBhNmUwZGFlLi5hZjIzMWZiIDEwMDY0NAotLS0gYS9zcmMvTWFrZV9tb3JwaC5tYWsKKysrIGIvc3JjL01ha2VfbW9ycGgubWFrCkBAIC00Miw3ICs0Miw2IEBACiAJZXhfZG9jbWQuYwkJCQkJCVwKIAlleF9ldmFsLmMJCQkJCQlcCiAJZXhfZ2V0bG4uYwkJCQkJCVwKLQlmYXJzaS5jCQkJCQkJCVwKIAlmaWxlaW8uYwkJCQkJCVwKIAlmaW5kZmlsZS5jCQkJCQkJXAogCWZvbGQuYwkJCQkJCQlcCmRpZmYgLS1naXQgYS9zcmMvTWFrZV9tdmMubWFrIGIvc3JjL01ha2VfbXZjLm1hawppbmRleCBjOTQ4ZjM3Li5jODFmYmQyIDEwMDY0NAotLS0gYS9zcmMvTWFrZV9tdmMubWFrCisrKyBiL3NyYy9NYWtlX212Yy5tYWsKQEAgLTY5NCw3ICs2OTQsNyBAQAogIWluY2x1ZGUgTWFrZV9hbGwubWFrCiAhaW5jbHVkZSB0ZXN0ZGlyXE1ha2VfYWxsLm1hawogCi1JTkNMID0JdmltLmggYWxsb2MuaCBhcmFiaWMuaCBhc2NpaS5oIGV4X2NtZHMuaCBmYXJzaS5oIGZlYXR1cmUuaCBnbG9iYWxzLmggXAorSU5DTCA9CXZpbS5oIGFsbG9jLmggYXJhYmljLmggYXNjaWkuaCBleF9jbWRzLmggZmVhdHVyZS5oIGdsb2JhbHMuaCBcCiAJa2V5bWFwLmggbWFjcm9zLmggb3B0aW9uLmggb3NfZG9zLmggb3Nfd2luMzIuaCBwcm90by5oIHJlZ2V4cC5oIFwKIAlzcGVsbC5oIHN0cnVjdHMuaCB0ZXJtLmggYmV2YWwuaCAkKE5CREVCVUdfSU5DTCkKIApAQCAtNzE5LDcgKzcxOSw2IEBACiAJJChPVVRESVIpXGV4X2RvY21kLm9iaiBcCiAJJChPVVRESVIpXGV4X2V2YWwub2JqIFwKIAkkKE9VVERJUilcZXhfZ2V0bG4ub2JqIFwKLQkkKE9VVERJUilcZmFyc2kub2JqIFwKIAkkKE9VVERJUilcZmlsZWlvLm9iaiBcCiAJJChPVVRESVIpXGZpbmRmaWxlLm9iaiBcCiAJJChPVVRESVIpXGZvbGQub2JqIFwKQEAgLTE0MDQsOCArMTQwMyw2IEBACiAKICQoT1VURElSKS9leF9nZXRsbi5vYmo6CSQoT1VURElSKSBleF9nZXRsbi5jICAkKElOQ0wpCiAKLSQoT1VURElSKS9mYXJzaS5vYmo6CSQoT1VURElSKSBmYXJzaS5jICAkKElOQ0wpCi0KICQoT1VURElSKS9maWxlaW8ub2JqOgkkKE9VVERJUikgZmlsZWlvLmMgICQoSU5DTCkKIAogJChPVVRESVIpL2ZpbmRmaWxlLm9iajoJJChPVVRESVIpIGZpbmRmaWxlLmMgICQoSU5DTCkKQEAgLTE2NDYsNyArMTY0Myw2IEBACiAJcHJvdG8vZXhfZG9jbWQucHJvIFwKIAlwcm90by9leF9ldmFsLnBybyBcCiAJcHJvdG8vZXhfZ2V0bG4ucHJvIFwKLQlwcm90by9mYXJzaS5wcm8gXAogCXByb3RvL2ZpbGVpby5wcm8gXAogCXByb3RvL2ZpbmRmaWxlLnBybyBcCiAJcHJvdG8vZ2V0Y2hhci5wcm8gXApkaWZmIC0tZ2l0IGEvc3JjL01ha2Vfc2FzLm1hayBiL3NyYy9NYWtlX3Nhcy5tYWsKaW5kZXggZGVhYTVlYi4uNmJhMDBmYiAxMDA2NDQKLS0tIGEvc3JjL01ha2Vfc2FzLm1haworKysgYi9zcmMvTWFrZV9zYXMubWFrCkBAIC0xMDcsNyArMTA3LDYgQEAKIAlleF9kb2NtZC5jIFwKIAlleF9ldmFsLmMgXAogCWV4X2dldGxuLmMgXAotCWZhcnNpLmMgXAogCWZpbGVpby5jIFwKIAlmaW5kZmlsZS5jIFwKIAlmb2xkLmMgXApAQCAtMTY4LDcgKzE2Nyw2IEBACiAJZXhfZG9jbWQubyBcCiAJZXhfZXZhbC5vIFwKIAlleF9nZXRsbi5vIFwKLQlmYXJzaS5vIFwKIAlmaWxlaW8ubyBcCiAJZmluZGZpbGUubyBcCiAJZm9sZC5vIFwKQEAgLTIyOSw3ICsyMjcsNiBAQAogCXByb3RvL2V4X2RvY21kLnBybyBcCiAJcHJvdG8vZXhfZXZhbC5wcm8gXAogCXByb3RvL2V4X2dldGxuLnBybyBcCi0JcHJvdG8vZmFyc2kucHJvIFwKIAlwcm90by9maWxlaW8ucHJvIFwKIAlwcm90by9maW5kZmlsZS5wcm8gXAogCXByb3RvL2ZvbGQucHJvIFwKQEAgLTM2Miw4ICszNTksNiBAQAogcHJvdG8vZXhfZXZhbC5wcm86CWV4X2V2YWwuYyBleF9jbWRzLmgKIGV4X2dldGxuLm86CQlleF9nZXRsbi5jCiBwcm90by9leF9nZXRsbi5wcm86CWV4X2dldGxuLmMKLWZhcnNpLm86CQlmYXJzaS5jCi1wcm90by9mYXJzaS5wcm86CWZhcnNpLmMKIGZpbGVpby5vOgkJZmlsZWlvLmMKIHByb3RvL2ZpbGVpby5wcm86CWZpbGVpby5jCiBmaW5kZmlsZS5vOgkJZmluZGZpbGUuYwpkaWZmIC0tZ2l0IGEvc3JjL01ha2Vfdm1zLm1tcyBiL3NyYy9NYWtlX3Ztcy5tbXMKaW5kZXggOTJmNWFiMS4uZDQwYzgyMCAxMDA2NDQKLS0tIGEvc3JjL01ha2Vfdm1zLm1tcworKysgYi9zcmMvTWFrZV92bXMubW1zCkBAIC0yLDcgKzIsNyBAQAogIyBNYWtlZmlsZSBmb3IgVmltIG9uIE9wZW5WTVMKICMKICMgTWFpbnRhaW5lcjogICBab2x0YW4gQXJwYWRmZnkgPGFycGFkZmZ5QHBvbGFyaG9tZS5jb20+Ci0jIExhc3QgY2hhbmdlOiAgMjAxOSBKYW4gMTgKKyMgTGFzdCBjaGFuZ2U6ICAyMDE5IEZlYiAxNgogIwogIyBUaGlzIGhhcyBzY3JpcHQgYmVlbiB0ZXN0ZWQgb24gVk1TIDYuMiB0byA4LjIgb24gREVDIEFscGhhLCBWQVggYW5kIElBNjQKICMgd2l0aCBNTVMgYW5kIE1NSwpAQCAtMzE1LDcgKzMxNSw3IEBACiBTUkMgPQlhcmFiaWMuYyBhdXRvY21kLmMgYmV2YWwuYyBibG9iLmMgYmxvd2Zpc2guYyBidWZmZXIuYyBjaGFyc2V0LmMgXAogCWNyeXB0LmMgY3J5cHRfemlwLmMgZGljdC5jIGRpZmYuYyBkaWdyYXBoLmMgZWRpdC5jIGV2YWwuYyBldmFsZnVuYy5jIFwKIAlleF9jbWRzLmMgZXhfY21kczIuYyBleF9kb2NtZC5jIGV4X2V2YWwuYyBleF9nZXRsbi5jIGlmX2NzY29wZS5jIFwKLQlpZl94Y21kc3J2LmMgZmFyc2kuYyBmaWxlaW8uYyBmaW5kZmlsZS5jIGZvbGQuYyBnZXRjaGFyLmMgaGFyZGNvcHkuYyBcCisJaWZfeGNtZHNydi5jIGZpbGVpby5jIGZpbmRmaWxlLmMgZm9sZC5jIGdldGNoYXIuYyBoYXJkY29weS5jIFwKIAloYXNodGFiLmMgaW5kZW50LmMganNvbi5jIGxpc3QuYyBtYWluLmMgbWFyay5jIG1lbnUuYyBtYnl0ZS5jIFwKIAltZW1maWxlLmMgbWVtbGluZS5jIG1lc3NhZ2UuYyBtaXNjMS5jIG1pc2MyLmMgbW92ZS5jIG5vcm1hbC5jIG9wcy5jIFwKIAlvcHRpb24uYyBwb3B1cG1udS5jIHF1aWNrZml4LmMgcmVnZXhwLmMgc2VhcmNoLmMgc2hhMjU2LmMgc2lnbi5jIFwKQEAgLTMyOCw3ICszMjgsNyBAQAogT0JKID0gCWFyYWJpYy5vYmogYXV0b2NtZC5vYmogYmV2YWwub2JqIGJsb2Iub2JqIGJsb3dmaXNoLm9iaiBidWZmZXIub2JqIFwKIAljaGFyc2V0Lm9iaiBjcnlwdC5vYmogY3J5cHRfemlwLm9iaiBkaWN0Lm9iaiBkaWZmLm9iaiBkaWdyYXBoLm9iaiBcCiAJZWRpdC5vYmogZXZhbC5vYmogZXZhbGZ1bmMub2JqIGV4X2NtZHMub2JqIGV4X2NtZHMyLm9iaiBleF9kb2NtZC5vYmogXAotCWV4X2V2YWwub2JqIGV4X2dldGxuLm9iaiBpZl9jc2NvcGUub2JqIGlmX3hjbWRzcnYub2JqIGZhcnNpLm9iaiBcCisJZXhfZXZhbC5vYmogZXhfZ2V0bG4ub2JqIGlmX2NzY29wZS5vYmogaWZfeGNtZHNydi5vYmogXAogCWZpbGVpby5vYmogZmluZGZpbGUub2JqIGZvbGQub2JqIGdldGNoYXIub2JqIGhhcmRjb3B5Lm9iaiBoYXNodGFiLm9iaiBcCiAJaW5kZW50Lm9iaiBqc29uLm9iaiBsaXN0Lm9iaiBtYWluLm9iaiBtYXJrLm9iaiBtZW51Lm9iaiBtZW1maWxlLm9iaiBcCiAJbWVtbGluZS5vYmogbWVzc2FnZS5vYmogbWlzYzEub2JqIG1pc2MyLm9iaiBtb3ZlLm9iaiBtYnl0ZS5vYmogXApAQCAtNTE0LDI3OSArNTE0LDI3OCBAQAogYnVmZmVyLm9iaiA6IGJ1ZmZlci5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBjaGFyc2V0Lm9iaiA6IGNoYXJzZXQuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGNyeXB0Lm9iaiA6IGNyeXB0LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBcCiAgYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogY3J5cHRfemlwLm9iaiA6IGNyeXB0X3ppcC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBzdHJ1Y3RzLmggXAogIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogZGljdC5vYmogOiBkaWN0LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBcCiAgYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogZGlmZi5vYmogOiBkaWZmLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIGRpZ3JhcGgub2JqIDogZGlncmFwaC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogZWRpdC5vYmogOiBlZGl0LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIGV2YWwub2JqIDogZXZhbC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oIHZlcnNpb24uaAogZXZhbGZ1bmMub2JqIDogZXZhbGZ1bmMuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggc3RydWN0cy5oIFwKICByZWdleHAuaCBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogZXhfY21kcy5vYmogOiBleF9jbWRzLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIGV4X2NtZHMyLm9iaiA6IGV4X2NtZHMyLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIGV4X2RvY21kLm9iaiA6IGV4X2RvY21kLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBleF9ldmFsLm9iaiA6IGV4X2V2YWwuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGV4X2dldGxuLm9iaiA6IGV4X2dldGxuLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCi1mYXJzaS5vYmogOiBmYXJzaS5jIHZpbS5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBmaWxlaW8ub2JqIDogZmlsZWlvLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBmaW5kZmlsZS5vYmogOiBmaW5kZmlsZS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogZm9sZC5vYmogOiBmb2xkLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIGdldGNoYXIub2JqIDogZ2V0Y2hhci5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogaGFyZGNvcHkub2JqIDogaGFyZGNvcHkuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGhhc2h0YWIub2JqIDogaGFzaHRhYi5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogaWZfY3Njb3BlLm9iaiA6IGlmX2NzY29wZS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBpZl9jc2NvcGUuaAorIGdsb2JhbHMuaCBhcmFiaWMuaCBpZl9jc2NvcGUuaAogaWZfeGNtZHNydi5vYmogOiBpZl94Y21kc3J2LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIGlmX216c2NoLm9iaiA6IGlmX216c2NoLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIHN0cnVjdHMuaCBcCiAgcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGlmX216c2NoLmggCisgZ2xvYmFscy5oIGFyYWJpYy5oIGlmX216c2NoLmggCiBpbmRlbnQub2JqIDogaW5kZW50LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmgKIGpzb24ub2JqIDoganNvbi5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oIHZlcnNpb24uaAogbGlzdC5vYmogOiBsaXN0LmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBcCiAgYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogbWFpbi5vYmogOiBtYWluLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCi0gYXJhYmljLmggZmFyc2kuYyBhcmFiaWMuYworIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAorIGFyYWJpYy5oIGFyYWJpYy5jCiBtYXJrLm9iaiA6IG1hcmsuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogbWVtZmlsZS5vYmogOiBtZW1maWxlLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBtZW1saW5lLm9iaiA6IG1lbWxpbmUuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIG1lbnUub2JqIDogbWVudS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiBtZXNzYWdlLm9iaiA6IG1lc3NhZ2UuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIG1pc2MxLm9iaiA6IG1pc2MxLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmggdmVyc2lvbi5oCiBtaXNjMi5vYmogOiBtaXNjMi5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiBtb3ZlLm9iaiA6IG1vdmUuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogbWJ5dGUub2JqIDogbWJ5dGUuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogbm9ybWFsLm9iaiA6IG5vcm1hbC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogb3BzLm9iaiA6IG9wcy5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiBvcHRpb24ub2JqIDogb3B0aW9uLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBvc191bml4Lm9iaiA6IG9zX3VuaXguYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggb3NfdW5peHguaAorIGdsb2JhbHMuaCBhcmFiaWMuaCBvc191bml4eC5oCiBvc192bXMub2JqIDogb3Nfdm1zLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIG9zX3VuaXh4LmgKKyBnbG9iYWxzLmggYXJhYmljLmggb3NfdW5peHguaAogcGF0aGRlZi5vYmogOiBwYXRoZGVmLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBwb3B1cG1udS5vYmogOiBwb3B1cG1udS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogcXVpY2tmaXgub2JqIDogcXVpY2tmaXguYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIHJlZ2V4cC5vYmogOiByZWdleHAuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIHNjcmVlbi5vYmogOiBzY3JlZW4uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIHNlYXJjaC5vYmogOiBzZWFyY2guYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIHNoYTI1Ni5vYmogOiBzaGEyNTYuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIFwKICBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBzaWduLm9iaiA6IHNpZ24uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIFwKICBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBzcGVsbC5vYmogOiBzcGVsbC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogc3BlbGxmaWxlLm9iaiA6IHNwZWxsZmlsZS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBzdHJ1Y3RzLmggXAogIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogc3ludGF4Lm9iaiA6IHN5bnRheC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogdGFnLm9iaiA6IHRhZy5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiB0ZXJtLm9iaiA6IHRlcm0uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogdGVybWxpYi5vYmogOiB0ZXJtbGliLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIHRleHRwcm9wLm9iaiA6IHRleHRwcm9wLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIHVpLm9iaiA6IHVpLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggICBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggXAotIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBcCisgWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBcCiAgYXJhYmljLmgKIHVuZG8ub2JqIDogdW5kby5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiB1c2VyZnVuYy5vYmogOiB1c2VyZnVuYy5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBzdHJ1Y3RzLmggXAogIHJlZ2V4cC5oIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogdmVyc2lvbi5vYmogOiB2ZXJzaW9uLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIHdpbmRvdy5vYmogOiB3aW5kb3cuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGd1aS5vYmogOiBndWkuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCAgIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBcCi0gWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKKyBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIFwKICBhcmFiaWMuaAogZ3VpX2d0ay5vYmogOiBndWlfZ3RrLmMgZ3VpX2d0a19mLmggdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oICAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIFwKICByZWdleHAuaCBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggWy0ucGl4bWFwc11zdG9ja19pY29ucy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggWy0ucGl4bWFwc11zdG9ja19pY29ucy5oCiBndWlfZ3RrX2Yub2JqIDogZ3VpX2d0a19mLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGd1aV9ndGtfZi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV9ndGtfZi5oCiBndWlfbW90aWYub2JqIDogZ3VpX21vdGlmLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIFstLnBpeG1hcHNdYWxlcnQueHBtIFstLnBpeG1hcHNdZXJyb3IueHBtIFwKKyBnbG9iYWxzLmggYXJhYmljLmggWy0ucGl4bWFwc11hbGVydC54cG0gWy0ucGl4bWFwc11lcnJvci54cG0gXAogIFstLnBpeG1hcHNdZ2VuZXJpYy54cG0gWy0ucGl4bWFwc11pbmZvLnhwbSBbLS5waXhtYXBzXXF1ZXN0LnhwbQogZ3VpX2F0aGVuYS5vYmogOiBndWlfYXRoZW5hLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oCiBndWlfZ3RrX3gxMS5vYmogOiBndWlfZ3RrX3gxMS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBndWlfZ3RrX2YuaCBbLS5ydW50aW1lXXZpbTMyeDMyLnhwbSBcCisgZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV9ndGtfZi5oIFstLnJ1bnRpbWVddmltMzJ4MzIueHBtIFwKICBbLS5ydW50aW1lXXZpbTE2eDE2LnhwbSBbLS5ydW50aW1lXXZpbTQ4eDQ4LnhwbQogZ3VpX3gxMS5vYmogOiBndWlfeDExLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIFstLnJ1bnRpbWVddmltMzJ4MzIueHBtIFwKKyBnbG9iYWxzLmggYXJhYmljLmggWy0ucnVudGltZV12aW0zMngzMi54cG0gXAogIFstLnJ1bnRpbWVddmltMTZ4MTYueHBtIFstLnJ1bnRpbWVddmltNDh4NDgueHBtIFstLnBpeG1hcHNddGJfbmV3LnhwbSBcCiAgWy0ucGl4bWFwc110Yl9vcGVuLnhwbSBbLS5waXhtYXBzXXRiX2Nsb3NlLnhwbSBbLS5waXhtYXBzXXRiX3NhdmUueHBtIFwKICBbLS5waXhtYXBzXXRiX3ByaW50LnhwbSBbLS5waXhtYXBzXXRiX2N1dC54cG0gWy0ucGl4bWFwc110Yl9jb3B5LnhwbSBcCkBAIC04MDYsNjAgKzgwNSw2MCBAQAogZ3VpX2F0X3NiLm9iaiA6IGd1aV9hdF9zYi5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBndWlfYXRfc2IuaAorIGdsb2JhbHMuaCBhcmFiaWMuaCBndWlfYXRfc2IuaAogZ3VpX2F0X2ZzLm9iaiA6IGd1aV9hdF9mcy5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBndWlfYXRfc2IuaAorIGdsb2JhbHMuaCBhcmFiaWMuaCBndWlfYXRfc2IuaAogcHR5Lm9iaiA6IHB0eS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oICAgXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBiZXZhbC5oIFwKLSBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggXAorIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBnbG9iYWxzLmggXAogIGFyYWJpYy5oCiBoYW5ndWxpbi5vYmogOiBoYW5ndWxpbi5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogaWZfcGVybC5vYmogOiBbLmF1dG9daWZfcGVybC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIGdsb2JhbHMuaCBhcmFiaWMuaAogaWZfcGVybHNmaW8ub2JqIDogaWZfcGVybHNmaW8uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGlmX3B5dGhvbi5vYmogOiBpZl9weXRob24uYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGlmX3RjbC5vYmogOiBpZl90Y2wuYyB2aW0uaCBbLmF1dG9dY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggc3RydWN0cy5oIHJlZ2V4cC5oIFwKICBndWkuaCBiZXZhbC5oIFsucHJvdG9dZ3VpX2JldmFsLnBybyBvcHRpb24uaCBleF9jbWRzLmggcHJvdG8uaCBcCi0gZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBnbG9iYWxzLmggYXJhYmljLmgKIGlmX3J1Ynkub2JqIDogaWZfcnVieS5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBiZXZhbC5vYmogOiBiZXZhbC5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiBndWlfYmV2YWwub2JqIDogZ3VpX2JldmFsLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgZ2xvYmFscy5oIGFyYWJpYy5oCiB3b3Jrc2hvcC5vYmogOiB3b3Jrc2hvcC5jIFsuYXV0b11jb25maWcuaCBpbnRlZ3JhdGlvbi5oIHZpbS5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCBcCiAgcmVnZXhwLmggZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaCB3b3Jrc2hvcC5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oIHdvcmtzaG9wLmgKIHdzZGVidWcub2JqIDogd3NkZWJ1Zy5jCiBpbnRlZ3JhdGlvbi5vYmogOiBpbnRlZ3JhdGlvbi5jIHZpbS5oIFsuYXV0b11jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBzdHJ1Y3RzLmggcmVnZXhwLmggXAogIGd1aS5oIGJldmFsLmggWy5wcm90b11ndWlfYmV2YWwucHJvIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIFwKLSBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBpbnRlZ3JhdGlvbi5oCisgZ2xvYmFscy5oIGFyYWJpYy5oIGludGVncmF0aW9uLmgKIG5ldGJlYW5zLm9iaiA6IG5ldGJlYW5zLmMgdmltLmggWy5hdXRvXWNvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIHN0cnVjdHMuaCByZWdleHAuaCBcCiAgZ3VpLmggYmV2YWwuaCBbLnByb3RvXWd1aV9iZXZhbC5wcm8gb3B0aW9uLmggZXhfY21kcy5oIHByb3RvLmggXAotIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIGd1aV94bWRsZy5vYmogOiBndWlfeG1kbGcuYyBbLmF1dG9dY29uZmlnLmggdmltLmggZmVhdHVyZS5oIG9zX3VuaXguaAogZ3VpX3htZWJ3Lm9iaiA6IGd1aV94bWVidy5jIFsuYXV0b11jb25maWcuaCB2aW0uaCBmZWF0dXJlLmggb3NfdW5peC5oCiB4ZGlmZmkub2JqIDogWy54ZGlmZl14ZGlmZmkuYyBbLnhkaWZmXXhpbmNsdWRlLmggWy5hdXRvXWNvbmZpZy5oIHZpbS5oIGZlYXR1cmUuaCBvc191bml4LmgKZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQppbmRleCA1NTc1OTAyLi5iZTQxZjc3IDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUKKysrIGIvc3JjL01ha2VmaWxlCkBAIC00OTIsOSArNDkyLDkgQEAKICMgTVVMVElCWVRFIC0gVG8gZWRpdCBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuCiAjIFRoaXMgaXMgbm93IGFsd2F5cyBlbmFibGVkLgogCi0jIFdoZW4gYnVpbGRpbmcgd2l0aCBhdCBsZWFzdCAiYmlnIiBmZWF0dXJlcywgcmlnaHQtbGVmdCwgQXJhYmljIGFuZCBGYXJzaQorIyBXaGVuIGJ1aWxkaW5nIHdpdGggYXQgbGVhc3QgImJpZyIgZmVhdHVyZXMsIHJpZ2h0LWxlZnQgYW5kIEFyYWJpYwogIyBmZWF0dXJlcyBhcmUgZW5hYmxlZC4gIFVzZSB0aGlzIHRvIGRpc2FibGUgdGhlbS4KLSNDT05GX09QVF9NVUxUSUJZVEUgPSAtLWRpc2FibGUtcmlnaHRsZWZ0IC0tZGlzYWJsZS1mYXJzaSAtLWRpc2FibGUtYXJhYmljCisjQ09ORl9PUFRfTVVMVElCWVRFID0gLS1kaXNhYmxlLXJpZ2h0bGVmdCAtLWRpc2FibGUtYXJhYmljCiAKICMgTkxTIC0gTmF0aW9uYWwgTGFuZ3VhZ2UgU3VwcG9ydAogIyBVbmNvbW1lbnQgdGhpcyB3aGVuIHlvdSBkbyBub3Qgd2FudCB0byBzdXBwb3J0IHRyYW5zbGF0ZWQgbWVzc2FnZXMsIGV2ZW4KQEAgLTE1OTAsNyArMTU5MCw2IEBACiAJZXhfZG9jbWQuYyBcCiAJZXhfZXZhbC5jIFwKIAlleF9nZXRsbi5jIFwKLQlmYXJzaS5jIFwKIAlmaWxlaW8uYyBcCiAJZmluZGZpbGUuYyBcCiAJZm9sZC5jIFwKQEAgLTE3MDQsNyArMTcwMyw2IEBACiAJb2JqZWN0cy9leF9kb2NtZC5vIFwKIAlvYmplY3RzL2V4X2V2YWwubyBcCiAJb2JqZWN0cy9leF9nZXRsbi5vIFwKLQlvYmplY3RzL2ZhcnNpLm8gXAogCW9iamVjdHMvZmlsZWlvLm8gXAogCW9iamVjdHMvZmluZGZpbGUubyBcCiAJb2JqZWN0cy9mb2xkLm8gXApAQCAtMTgzMSw3ICsxODI5LDYgQEAKIAlleF9kb2NtZC5wcm8gXAogCWV4X2V2YWwucHJvIFwKIAlleF9nZXRsbi5wcm8gXAotCWZhcnNpLnBybyBcCiAJZmlsZWlvLnBybyBcCiAJZmluZGZpbGUucHJvIFwKIAlmb2xkLnBybyBcCkBAIC0yOTk2LDkgKzI5OTMsNiBAQAogb2JqZWN0cy9leF9nZXRsbi5vOiBleF9nZXRsbi5jCiAJJChDQ0MpIC1vICRAIGV4X2dldGxuLmMKIAotb2JqZWN0cy9mYXJzaS5vOiBmYXJzaS5jCi0JJChDQ0MpIC1vICRAIGZhcnNpLmMKLQogb2JqZWN0cy9maWxlaW8ubzogZmlsZWlvLmMKIAkkKENDQykgLW8gJEAgZmlsZWlvLmMKIApAQCAtMzM5MiwyOTAgKzMzODYsMjg2IEBACiBvYmplY3RzL2FyYWJpYy5vOiBhcmFiaWMuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9hdXRvY21kLm86IGF1dG9jbWQuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9iZXZhbC5vOiBiZXZhbC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2Jsb2IubzogYmxvYi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2Jsb3dmaXNoLm86IGJsb3dmaXNoLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvYnVmZmVyLm86IGJ1ZmZlci5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIG9iamVjdHMvY2hhcnNldC5vOiBjaGFyc2V0LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvY3J5cHQubzogY3J5cHQuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9jcnlwdF96aXAubzogY3J5cHRfemlwLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvZGljdC5vOiBkaWN0LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvZGlmZi5vOiBkaWZmLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHhkaWZmL3hkaWZmLmggdmltLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB4ZGlmZi94ZGlmZi5oIHZpbS5oCiBvYmplY3RzL2RpZ3JhcGgubzogZGlncmFwaC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2VkaXQubzogZWRpdC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2V2YWwubzogZXZhbC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIG9iamVjdHMvZXZhbGZ1bmMubzogZXZhbGZ1bmMuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBvYmplY3RzL2V4X2NtZHMubzogZXhfY21kcy5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCB2ZXJzaW9uLmgKIG9iamVjdHMvZXhfY21kczIubzogZXhfY21kczIuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBvYmplY3RzL2V4X2RvY21kLm86IGV4X2RvY21kLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGV4X2NtZGlkeHMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGV4X2NtZGlkeHMuaAogb2JqZWN0cy9leF9ldmFsLm86IGV4X2V2YWwuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9leF9nZXRsbi5vOiBleF9nZXRsbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAotb2JqZWN0cy9mYXJzaS5vOiBmYXJzaS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKLSBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCi0gcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2ZpbGVpby5vOiBmaWxlaW8uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9maW5kZmlsZS5vOiBmaW5kZmlsZS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBsaWJ2dGVybS9pbmNsdWRlL3Z0ZXJtLmggXAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGxpYnZ0ZXJtL2luY2x1ZGUvdnRlcm0uaCBcCiAgbGlidnRlcm0vaW5jbHVkZS92dGVybV9rZXljb2Rlcy5oCiBvYmplY3RzL2ZvbGQubzogZm9sZC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2dldGNoYXIubzogZ2V0Y2hhci5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2hhcmRjb3B5Lm86IGhhcmRjb3B5LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogb2JqZWN0cy9oYXNodGFiLm86IGhhc2h0YWIuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9pZl9jc2NvcGUubzogaWZfY3Njb3BlLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGlmX2NzY29wZS5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggaWZfY3Njb3BlLmgKIG9iamVjdHMvaWZfeGNtZHNydi5vOiBpZl94Y21kc3J2LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogb2JqZWN0cy9pbmRlbnQubzogaW5kZW50LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvanNvbi5vOiBqc29uLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbGlzdC5vOiBsaXN0LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbWFpbi5vOiBtYWluLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbWFyay5vOiBtYXJrLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbWVtZmlsZS5vOiBtZW1maWxlLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbWVtbGluZS5vOiBtZW1saW5lLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbWVudS5vOiBtZW51LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbWVzc2FnZS5vOiBtZXNzYWdlLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbWlzYzEubzogbWlzYzEuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBvYmplY3RzL21pc2MyLm86IG1pc2MyLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbW92ZS5vOiBtb3ZlLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbWJ5dGUubzogbWJ5dGUuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9ub3JtYWwubzogbm9ybWFsLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvb3BzLm86IG9wcy5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL29wdGlvbi5vOiBvcHRpb24uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9vc191bml4Lm86IG9zX3VuaXguYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggb3NfdW5peHguaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIG9zX3VuaXh4LmgKIG9iamVjdHMvcGF0aGRlZi5vOiBhdXRvL3BhdGhkZWYuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9wb3B1cG1udS5vOiBwb3B1cG1udS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3B0eS5vOiBwdHkuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9xdWlja2ZpeC5vOiBxdWlja2ZpeC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3JlZ2V4cC5vOiByZWdleHAuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggcmVnZXhwX25mYS5jCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggcmVnZXhwX25mYS5jCiBvYmplY3RzL3NjcmVlbi5vOiBzY3JlZW4uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9zZWFyY2gubzogc2VhcmNoLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvc2hhMjU2Lm86IHNoYTI1Ni5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3NpZ24ubzogc2lnbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3NwZWxsLm86IHNwZWxsLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvc3BlbGxmaWxlLm86IHNwZWxsZmlsZS5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3N5bnRheC5vOiBzeW50YXguYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy90YWcubzogdGFnLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvdGVybS5vOiB0ZXJtLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGxpYnZ0ZXJtL2luY2x1ZGUvdnRlcm0uaCBcCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggbGlidnRlcm0vaW5jbHVkZS92dGVybS5oIFwKICBsaWJ2dGVybS9pbmNsdWRlL3Z0ZXJtX2tleWNvZGVzLmgKIG9iamVjdHMvdGVybWluYWwubzogdGVybWluYWwuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggbGlidnRlcm0vaW5jbHVkZS92dGVybS5oIFwKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBsaWJ2dGVybS9pbmNsdWRlL3Z0ZXJtLmggXAogIGxpYnZ0ZXJtL2luY2x1ZGUvdnRlcm1fa2V5Y29kZXMuaAogb2JqZWN0cy90ZXh0cHJvcC5vOiB0ZXh0cHJvcC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL3VpLm86IHVpLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvdW5kby5vOiB1bmRvLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvdXNlcmZ1bmMubzogdXNlcmZ1bmMuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy92ZXJzaW9uLm86IHZlcnNpb24uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBvYmplY3RzL3dpbmRvdy5vOiB3aW5kb3cuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9ndWkubzogZ3VpLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvZ3VpX2d0ay5vOiBndWlfZ3RrLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGd1aV9ndGtfZi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggZ3VpX2d0a19mLmgKIG9iamVjdHMvZ3VpX2d0a19mLm86IGd1aV9ndGtfZi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBndWlfZ3RrX2YuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV9ndGtfZi5oCiBvYmplY3RzL2d1aV9tb3RpZi5vOiBndWlfbW90aWYuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggZ3VpX3htZWJ3LmggLi4vcGl4bWFwcy9hbGVydC54cG0gXAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV94bWVidy5oIC4uL3BpeG1hcHMvYWxlcnQueHBtIFwKICAuLi9waXhtYXBzL2Vycm9yLnhwbSAuLi9waXhtYXBzL2dlbmVyaWMueHBtIC4uL3BpeG1hcHMvaW5mby54cG0gXAogIC4uL3BpeG1hcHMvcXVlc3QueHBtIGd1aV94MTFfcG0uaCAuLi9waXhtYXBzL3RiX25ldy54cG0gXAogIC4uL3BpeG1hcHMvdGJfb3Blbi54cG0gLi4vcGl4bWFwcy90Yl9jbG9zZS54cG0gLi4vcGl4bWFwcy90Yl9zYXZlLnhwbSBcCkBAIC0zNjk2LDE1ICszNjg2LDE1IEBACiBvYmplY3RzL2d1aV94bWRsZy5vOiBndWlfeG1kbGcuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9ndWlfeG1lYncubzogZ3VpX3htZWJ3LmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGd1aV94bWVid3AuaCBndWlfeG1lYncuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV94bWVid3AuaCBndWlfeG1lYncuaAogb2JqZWN0cy9ndWlfYXRoZW5hLm86IGd1aV9hdGhlbmEuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggZ3VpX2F0X3NiLmggZ3VpX3gxMV9wbS5oIFwKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBndWlfYXRfc2IuaCBndWlfeDExX3BtLmggXAogIC4uL3BpeG1hcHMvdGJfbmV3LnhwbSAuLi9waXhtYXBzL3RiX29wZW4ueHBtIC4uL3BpeG1hcHMvdGJfY2xvc2UueHBtIFwKICAuLi9waXhtYXBzL3RiX3NhdmUueHBtIC4uL3BpeG1hcHMvdGJfcHJpbnQueHBtIC4uL3BpeG1hcHMvdGJfY3V0LnhwbSBcCiAgLi4vcGl4bWFwcy90Yl9jb3B5LnhwbSAuLi9waXhtYXBzL3RiX3Bhc3RlLnhwbSAuLi9waXhtYXBzL3RiX2ZpbmQueHBtIFwKQEAgLTM3MjMsODUgKzM3MTMsODUgQEAKIG9iamVjdHMvZ3VpX2d0a194MTEubzogZ3VpX2d0a194MTEuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggYXV0by9ndWlfZ3RrX2dyZXNvdXJjZXMuaCBndWlfZ3RrX2YuaCBcCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggYXV0by9ndWlfZ3RrX2dyZXNvdXJjZXMuaCBndWlfZ3RrX2YuaCBcCiAgLi4vcnVudGltZS92aW0zMngzMi54cG0gLi4vcnVudGltZS92aW0xNngxNi54cG0gLi4vcnVudGltZS92aW00OHg0OC54cG0KIG9iamVjdHMvZ3VpX3gxMS5vOiBndWlfeDExLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIC4uL3J1bnRpbWUvdmltMzJ4MzIueHBtIFwKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCAuLi9ydW50aW1lL3ZpbTMyeDMyLnhwbSBcCiAgLi4vcnVudGltZS92aW0xNngxNi54cG0gLi4vcnVudGltZS92aW00OHg0OC54cG0KIG9iamVjdHMvZ3VpX2F0X3NiLm86IGd1aV9hdF9zYi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBndWlfYXRfc2IuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGd1aV9hdF9zYi5oCiBvYmplY3RzL2d1aV9hdF9mcy5vOiBndWlfYXRfZnMuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIFwKICBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggZ3VpX2F0X3NiLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBndWlfYXRfc2IuaAogb2JqZWN0cy9qc29uX3Rlc3QubzoganNvbl90ZXN0LmMgbWFpbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBqc29uLmMKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBqc29uLmMKIG9iamVjdHMva3dvcmRfdGVzdC5vOiBrd29yZF90ZXN0LmMgbWFpbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBcCiAgZmVhdHVyZS5oIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggXAogIG9wdGlvbi5oIGJldmFsLmggcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBcCi0gZXhfY21kcy5oIHNwZWxsLmggcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBjaGFyc2V0LmMKKyBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBjaGFyc2V0LmMKIG9iamVjdHMvbWVtZmlsZV90ZXN0Lm86IG1lbWZpbGVfdGVzdC5jIG1haW4uYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggXAogIGZlYXR1cmUuaCBvc191bml4LmggYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIFwKICBvcHRpb24uaCBiZXZhbC5oIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggXAotIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggbWVtZmlsZS5jCisgZXhfY21kcy5oIHNwZWxsLmggcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggbWVtZmlsZS5jCiBvYmplY3RzL21lc3NhZ2VfdGVzdC5vOiBtZXNzYWdlX3Rlc3QuYyBtYWluLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIFwKICBmZWF0dXJlLmggb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBcCiAgb3B0aW9uLmggYmV2YWwuaCBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIFwKLSBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIG1lc3NhZ2UuYworIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIG1lc3NhZ2UuYwogb2JqZWN0cy9oYW5ndWxpbi5vOiBoYW5ndWxpbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2lmX2x1YS5vOiBpZl9sdWEuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaAogb2JqZWN0cy9pZl9tenNjaC5vOiBpZl9tenNjaC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBpZl9tenNjaC5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggaWZfbXpzY2guaAogb2JqZWN0cy9pZl9wZXJsLm86IGF1dG8vaWZfcGVybC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2lmX3BlcmxzZmlvLm86IGlmX3BlcmxzZmlvLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvaWZfcHl0aG9uLm86IGlmX3B5dGhvbi5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggXAogIG9zX3VuaXguaCBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaCBpZl9weV9ib3RoLmgKKyBwcm90by5oIGdsb2JhbHMuaCBhcmFiaWMuaCBpZl9weV9ib3RoLmgKIG9iamVjdHMvaWZfcHl0aG9uMy5vOiBpZl9weXRob24zLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIGlmX3B5X2JvdGguaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIGlmX3B5X2JvdGguaAogb2JqZWN0cy9pZl90Y2wubzogaWZfdGNsLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvaWZfcnVieS5vOiBpZl9ydWJ5LmMgcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIHZpbS5oIGZlYXR1cmUuaCBvc191bml4LmggXAogIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oIHZlcnNpb24uaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oIHZlcnNpb24uaAogb2JqZWN0cy9ndWlfYmV2YWwubzogZ3VpX2JldmFsLmMgdmltLmggcHJvdG9kZWYuaCBhdXRvL2NvbmZpZy5oIGZlYXR1cmUuaCBcCiAgb3NfdW5peC5oIGF1dG8vb3NkZWYuaCBhc2NpaS5oIGtleW1hcC5oIHRlcm0uaCBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIFwKICBwcm90by9ndWlfYmV2YWwucHJvIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIGV4X2NtZHMuaCBzcGVsbC5oIFwKLSBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIGFyYWJpYy5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmgKIG9iamVjdHMvbmV0YmVhbnMubzogbmV0YmVhbnMuYyB2aW0uaCBwcm90b2RlZi5oIGF1dG8vY29uZmlnLmggZmVhdHVyZS5oIG9zX3VuaXguaCBcCiAgYXV0by9vc2RlZi5oIGFzY2lpLmgga2V5bWFwLmggdGVybS5oIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggXAogIHByb3RvL2d1aV9iZXZhbC5wcm8gc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggZXhfY21kcy5oIHNwZWxsLmggXAotIHByb3RvLmggZ2xvYmFscy5oIGZhcnNpLmggYXJhYmljLmggdmVyc2lvbi5oCisgcHJvdG8uaCBnbG9iYWxzLmggYXJhYmljLmggdmVyc2lvbi5oCiBvYmplY3RzL2NoYW5uZWwubzogY2hhbm5lbC5jIHZpbS5oIHByb3RvZGVmLmggYXV0by9jb25maWcuaCBmZWF0dXJlLmggb3NfdW5peC5oIFwKICBhdXRvL29zZGVmLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBcCiAgcHJvdG8vZ3VpX2JldmFsLnBybyBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBleF9jbWRzLmggc3BlbGwuaCBcCi0gcHJvdG8uaCBnbG9iYWxzLmggZmFyc2kuaCBhcmFiaWMuaAorIHByb3RvLmggZ2xvYmFscy5oIGFyYWJpYy5oCiBvYmplY3RzL2d1aV9ndGtfZ3Jlc291cmNlcy5vOiBhdXRvL2d1aV9ndGtfZ3Jlc291cmNlcy5jCiBvYmplY3RzL2VuY29kaW5nLm86IGxpYnZ0ZXJtL3NyYy9lbmNvZGluZy5jIGxpYnZ0ZXJtL3NyYy92dGVybV9pbnRlcm5hbC5oIFwKICBsaWJ2dGVybS9pbmNsdWRlL3Z0ZXJtLmggbGlidnRlcm0vaW5jbHVkZS92dGVybV9rZXljb2Rlcy5oIFwKQEAgLTM4MzMsNyArMzgyMyw3IEBACiAgbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBwcm90by9ndWlfYmV2YWwucHJvIFwKICBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBcCiAgZXhfY21kcy5oIHNwZWxsLmggcHJvdG8uaCBnbG9iYWxzLmggXAotIGZhcnNpLmggYXJhYmljLmggeGRpZmYveHR5cGVzLmggeGRpZmYveHV0aWxzLmggXAorIGFyYWJpYy5oIHhkaWZmL3h0eXBlcy5oIHhkaWZmL3h1dGlscy5oIFwKICB4ZGlmZi94cHJlcGFyZS5oIHhkaWZmL3hkaWZmaS5oIHhkaWZmL3hlbWl0LmgKIG9iamVjdHMveGVtaXQubzogeGRpZmYveGVtaXQuYyB4ZGlmZi94aW5jbHVkZS5oIGF1dG8vY29uZmlnLmggXAogIHhkaWZmL3htYWNyb3MuaCB4ZGlmZi94ZGlmZi5oIHZpbS5oIHByb3RvZGVmLmggXApAQCAtMzg0Miw3ICszODMyLDcgQEAKICBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIHByb3RvL2d1aV9iZXZhbC5wcm8gXAogIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIFwKICBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIGdsb2JhbHMuaCBcCi0gZmFyc2kuaCBhcmFiaWMuaCB4ZGlmZi94dHlwZXMuaCB4ZGlmZi94dXRpbHMuaCBcCisgYXJhYmljLmggeGRpZmYveHR5cGVzLmggeGRpZmYveHV0aWxzLmggXAogIHhkaWZmL3hwcmVwYXJlLmggeGRpZmYveGRpZmZpLmggeGRpZmYveGVtaXQuaAogb2JqZWN0cy94cHJlcGFyZS5vOiB4ZGlmZi94cHJlcGFyZS5jIHhkaWZmL3hpbmNsdWRlLmggYXV0by9jb25maWcuaCBcCiAgeGRpZmYveG1hY3Jvcy5oIHhkaWZmL3hkaWZmLmggdmltLmggcHJvdG9kZWYuaCBcCkBAIC0zODUxLDcgKzM4NDEsNyBAQAogIG1hY3Jvcy5oIG9wdGlvbi5oIGJldmFsLmggcHJvdG8vZ3VpX2JldmFsLnBybyBcCiAgc3RydWN0cy5oIHJlZ2V4cC5oIGd1aS5oIGFsbG9jLmggXAogIGV4X2NtZHMuaCBzcGVsbC5oIHByb3RvLmggZ2xvYmFscy5oIFwKLSBmYXJzaS5oIGFyYWJpYy5oIHhkaWZmL3h0eXBlcy5oIHhkaWZmL3h1dGlscy5oIFwKKyBhcmFiaWMuaCB4ZGlmZi94dHlwZXMuaCB4ZGlmZi94dXRpbHMuaCBcCiAgeGRpZmYveHByZXBhcmUuaCB4ZGlmZi94ZGlmZmkuaCB4ZGlmZi94ZW1pdC5oCiBvYmplY3RzL3h1dGlscy5vOiB4ZGlmZi94dXRpbHMuYyB4ZGlmZi94aW5jbHVkZS5oIGF1dG8vY29uZmlnLmggXAogIHhkaWZmL3htYWNyb3MuaCB4ZGlmZi94ZGlmZi5oIHZpbS5oIHByb3RvZGVmLmggXApAQCAtMzg2MCw3ICszODUwLDcgQEAKICBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIHByb3RvL2d1aV9iZXZhbC5wcm8gXAogIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIFwKICBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIGdsb2JhbHMuaCBcCi0gZmFyc2kuaCBhcmFiaWMuaCB4ZGlmZi94dHlwZXMuaCB4ZGlmZi94dXRpbHMuaCBcCisgYXJhYmljLmggeGRpZmYveHR5cGVzLmggeGRpZmYveHV0aWxzLmggXAogIHhkaWZmL3hwcmVwYXJlLmggeGRpZmYveGRpZmZpLmggeGRpZmYveGVtaXQuaAogb2JqZWN0cy94aGlzdG9ncmFtLm86IHhkaWZmL3hoaXN0b2dyYW0uYyB4ZGlmZi94aW5jbHVkZS5oIGF1dG8vY29uZmlnLmggXAogIHhkaWZmL3htYWNyb3MuaCB4ZGlmZi94ZGlmZi5oIHZpbS5oIHByb3RvZGVmLmggXApAQCAtMzg2OSw3ICszODU5LDcgQEAKICBtYWNyb3MuaCBvcHRpb24uaCBiZXZhbC5oIHByb3RvL2d1aV9iZXZhbC5wcm8gXAogIHN0cnVjdHMuaCByZWdleHAuaCBndWkuaCBhbGxvYy5oIFwKICBleF9jbWRzLmggc3BlbGwuaCBwcm90by5oIGdsb2JhbHMuaCBcCi0gZmFyc2kuaCBhcmFiaWMuaCB4ZGlmZi94dHlwZXMuaCB4ZGlmZi94dXRpbHMuaCBcCisgYXJhYmljLmggeGRpZmYveHR5cGVzLmggeGRpZmYveHV0aWxzLmggXAogIHhkaWZmL3hwcmVwYXJlLmggeGRpZmYveGRpZmZpLmggeGRpZmYveGVtaXQuaAogb2JqZWN0cy94cGF0aWVuY2UubzogeGRpZmYveHBhdGllbmNlLmMgeGRpZmYveGluY2x1ZGUuaCBhdXRvL2NvbmZpZy5oIFwKICB4ZGlmZi94bWFjcm9zLmggeGRpZmYveGRpZmYuaCB2aW0uaCBwcm90b2RlZi5oIFwKQEAgLTM4NzgsNSArMzg2OCw1IEBACiAgbWFjcm9zLmggb3B0aW9uLmggYmV2YWwuaCBwcm90by9ndWlfYmV2YWwucHJvIFwKICBzdHJ1Y3RzLmggcmVnZXhwLmggZ3VpLmggYWxsb2MuaCBcCiAgZXhfY21kcy5oIHNwZWxsLmggcHJvdG8uaCBnbG9iYWxzLmggXAotIGZhcnNpLmggYXJhYmljLmggeGRpZmYveHR5cGVzLmggeGRpZmYveHV0aWxzLmggXAorIGFyYWJpYy5oIHhkaWZmL3h0eXBlcy5oIHhkaWZmL3h1dGlscy5oIFwKICB4ZGlmZi94cHJlcGFyZS5oIHhkaWZmL3hkaWZmaS5oIHhkaWZmL3hlbWl0LmgKZGlmZiAtLWdpdCBhL3NyYy9hdXRvL2NvbmZpZ3VyZSBiL3NyYy9hdXRvL2NvbmZpZ3VyZQppbmRleCA4MDUyY2ViLi5kYjNlM2IxIDEwMDc1NQotLS0gYS9zcmMvYXV0by9jb25maWd1cmUKKysrIGIvc3JjL2F1dG8vY29uZmlndXJlCkBAIC0xNDk4LDcgKzE0OTgsNyBAQAogICAtLWVuYWJsZS1tdWx0aWJ5dGUgICAgICBJbmNsdWRlIG11bHRpYnl0ZSBlZGl0aW5nIHN1cHBvcnQuCiAgIC0tZGlzYWJsZS1yaWdodGxlZnQgICAgIERvIG5vdCBpbmNsdWRlIFJpZ2h0LXRvLUxlZnQgbGFuZ3VhZ2Ugc3VwcG9ydC4KICAgLS1kaXNhYmxlLWFyYWJpYyAgICAgICAgRG8gbm90IGluY2x1ZGUgQXJhYmljIGxhbmd1YWdlIHN1cHBvcnQuCi0gIC0tZGlzYWJsZS1mYXJzaSAgICAgICAgIERvIG5vdCBpbmNsdWRlIEZhcnNpIGxhbmd1YWdlIHN1cHBvcnQuCisgIC0tZGlzYWJsZS1mYXJzaSAgICAgICAgIERlcHJlY2F0ZWQuCiAgIC0tZW5hYmxlLWhhbmd1bGlucHV0ICAgIEluY2x1ZGUgSGFuZ3VsIGlucHV0IHN1cHBvcnQuCiAgIC0tZW5hYmxlLXhpbSAgICAgICAgICAgIEluY2x1ZGUgWElNIGlucHV0IHN1cHBvcnQuCiAgIC0tZW5hYmxlLWZvbnRzZXQgICAgICAgIEluY2x1ZGUgWCBmb250c2V0IG91dHB1dCBzdXBwb3J0LgpAQCAtNzk4MCwyNCArNzk4MCwxMSBAQAogCiBmaQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIC0tZGlzYWJsZS1mYXJzaSBhcmd1bWVudCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyAtLWRpc2FibGUtZmFyc2kgYXJndW1lbnQuLi4gIiA+JjY7IH0KICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1mYXJzaSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9mYXJzaStzZXR9IiA9IHNldDsgdGhlbiA6CiAgIGVuYWJsZXZhbD0kZW5hYmxlX2ZhcnNpOwotZWxzZQotICBlbmFibGVfZmFyc2k9InllcyIKIGZpCiAKLWlmIHRlc3QgIiRlbmFibGVfZmFyc2kiID0gInllcyI7IHRoZW4KLQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWVsc2UKLQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotCSRhc19lY2hvICIjZGVmaW5lIERJU0FCTEVfRkFSU0kgMSIgPj5jb25mZGVmcy5oCi0KLWZpCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgLS1lbmFibGUtaGFuZ3VsaW5wdXQgYXJndW1lbnQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgLS1lbmFibGUtaGFuZ3VsaW5wdXQgYXJndW1lbnQuLi4gIiA+JjY7IH0KZGlmZiAtLWdpdCBhL3NyYy9jaGFyc2V0LmMgYi9zcmMvY2hhcnNldC5jCmluZGV4IDViMDkxZWMuLjFkNjZkNjEgMTAwNjQ0Ci0tLSBhL3NyYy9jaGFyc2V0LmMKKysrIGIvc3JjL2NoYXJzZXQuYwpAQCAtOTgsMTMgKzk4LDYgQEAKIAl3aGlsZSAoYyA8PSAnficpCiAjZW5kaWYKIAkgICAgZ19jaGFydGFiW2MrK10gPSAxICsgQ1RfUFJJTlRfQ0hBUjsKLSNpZmRlZiBGRUFUX0ZLTUFQCi0JaWYgKHBfYWx0a2V5bWFwKQotCXsKLQkgICAgd2hpbGUgKGMgPCBZRSkKLQkJZ19jaGFydGFiW2MrK10gPSAxICsgQ1RfUFJJTlRfQ0hBUjsKLQl9Ci0jZW5kaWYKIAl3aGlsZSAoYyA8IDI1NikKIAl7CiAJICAgIC8qIFVURi04OiBieXRlcyAweGEwIC0gMHhmZiBhcmUgcHJpbnRhYmxlIChsYXRpbjEpICovCkBAIC0yMTgsMTEgKzIxMSw3IEBACiAJCS8qIFVzZSB0aGUgTUJfIGZ1bmN0aW9ucyBoZXJlLCBiZWNhdXNlIGlzYWxwaGEoKSBkb2Vzbid0CiAJCSAqIHdvcmsgcHJvcGVybHkgd2hlbiAnZW5jb2RpbmcnIGlzICJsYXRpbjEiIGFuZCB0aGUgbG9jYWxlIGlzCiAJCSAqICJDIi4gICovCi0JCWlmICghZG9faXNhbHBoYSB8fCBNQl9JU0xPV0VSKGMpIHx8IE1CX0lTVVBQRVIoYykKLSNpZmRlZiBGRUFUX0ZLTUFQCi0JCQl8fCAocF9hbHRrZXltYXAgJiYgKEZfaXNhbHBoYShjKSB8fCBGX2lzZGlnaXQoYykpKQotI2VuZGlmCi0JCQkgICAgKQorCQlpZiAoIWRvX2lzYWxwaGEgfHwgTUJfSVNMT1dFUihjKSB8fCBNQl9JU1VQUEVSKGMpKQogCQl7CiAJCSAgICBpZiAoaSA9PSAwKQkJCS8qIChyZSlzZXQgSUQgZmxhZyAqLwogCQkgICAgewpAQCAtMjM3LDEwICsyMjYsNiBAQAogI2lmbmRlZiBFQkNESUMKIAkJCQkgICAgfHwgYyA+ICd+JwogI2VuZGlmCi0jaWZkZWYgRkVBVF9GS01BUAotCQkJCSAgICB8fCAocF9hbHRrZXltYXAKLQkJCQkJJiYgKEZfaXNhbHBoYShjKSB8fCBGX2lzZGlnaXQoYykpKQotI2VuZGlmCiAJCQkJLy8gRm9yIGRvdWJsZS1ieXRlIHdlIGtlZXAgdGhlIGNlbGwgd2lkdGgsIHNvCiAJCQkJLy8gdGhhdCB3ZSBjYW4gZGV0ZWN0IGl0IGZyb20gdGhlIGZpcnN0IGJ5dGUuCiAJCQkgICAgKSAmJiAhKGVuY19kYmNzICYmIE1CX0JZVEUyTEVOKGMpID09IDIpKQpAQCAtNTQwLDkgKzUyNSw2IEBACiAjZWxzZQogCQkgICAgKGMgPj0gJyAnICYmIGMgPD0gJ34nKQogI2VuZGlmCi0jaWZkZWYgRkVBVF9GS01BUAotCQkJfHwgKHBfYWx0a2V5bWFwICYmIEZfaXNjaGFyKGMpKQotI2VuZGlmCiAJCSkpIHx8IChjIDwgMjU2ICYmIHZpbV9pc3ByaW50Y19zdHJpY3QoYykpKQogICAgIHsKIAkvKiBwcmludGFibGUgY2hhcmFjdGVyICovCmRpZmYgLS1naXQgYS9zcmMvY29uZmlnLmguaW4gYi9zcmMvY29uZmlnLmguaW4KaW5kZXggZDFhYWY3MC4uN2ZlNjVkZSAxMDA2NDQKLS0tIGEvc3JjL2NvbmZpZy5oLmluCisrKyBiL3NyYy9jb25maWcuaC5pbgpAQCAtMzkxLDkgKzM5MSw2IEBACiAvKiBEZWZpbmUgaWYgeW91IGRvbid0IHdhbnQgdG8gaW5jbHVkZSByaWdodC1sZWZ0IHN1cHBvcnQuICovCiAjdW5kZWYgRElTQUJMRV9SSUdIVExFRlQKIAotLyogRGVmaW5lIGlmIHlvdSBkb24ndCB3YW50IHRvIGluY2x1ZGUgRmFyc2kgc3VwcG9ydC4gKi8KLSN1bmRlZiBESVNBQkxFX0ZBUlNJCi0KIC8qIERlZmluZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIEFyYWJpYyBzdXBwb3J0LiAqLwogI3VuZGVmIERJU0FCTEVfQVJBQklDCiAKZGlmZiAtLWdpdCBhL3NyYy9jb25maWd1cmUuYWMgYi9zcmMvY29uZmlndXJlLmFjCmluZGV4IDJiNzcyNWIuLjJkNDA5YjMgMTAwNjQ0Ci0tLSBhL3NyYy9jb25maWd1cmUuYWMKKysrIGIvc3JjL2NvbmZpZ3VyZS5hYwpAQCAtMjE1NSwxOCArMjE1NSw5IEBACiAJQUNfREVGSU5FKERJU0FCTEVfQVJBQklDKQogZmkKIAotZG5sIEZhcnNpIGxhbmd1YWdlIHN1cHBvcnQgZm9yIHZpbSB3aWxsIGJlIGluY2x1ZGVkIHdpdGggYmlnIGZlYXR1cmVzLAotZG5sIHVubGVzcyBFTkFCTEVfRkFSU0kgaXMgdW5kZWZpbmVkLgotQUNfTVNHX0NIRUNLSU5HKC0tZGlzYWJsZS1mYXJzaSBhcmd1bWVudCkKK2RubCBGYXJzaSBsYW5ndWFnZSBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQsIGlnbm9yZSAtLWRpc2FibGUtZmFyc2kKIEFDX0FSR19FTkFCTEUoZmFyc2ksCi0JWyAgLS1kaXNhYmxlLWZhcnNpICAgICAgICAgRG8gbm90IGluY2x1ZGUgRmFyc2kgbGFuZ3VhZ2Ugc3VwcG9ydC5dLAotCSwgW2VuYWJsZV9mYXJzaT0ieWVzIl0pCi1pZiB0ZXN0ICIkZW5hYmxlX2ZhcnNpIiA9ICJ5ZXMiOyB0aGVuCi0JQUNfTVNHX1JFU1VMVChubykKLWVsc2UKLQlBQ19NU0dfUkVTVUxUKHllcykKLQlBQ19ERUZJTkUoRElTQUJMRV9GQVJTSSkKLWZpCisJWyAgLS1kaXNhYmxlLWZhcnNpICAgICAgICAgRGVwcmVjYXRlZC5dLCwpCiAKIEFDX01TR19DSEVDS0lORygtLWVuYWJsZS1oYW5ndWxpbnB1dCBhcmd1bWVudCkKIEFDX0FSR19FTkFCTEUoaGFuZ3VsaW5wdXQsCmRpZmYgLS1naXQgYS9zcmMvZWRpdC5jIGIvc3JjL2VkaXQuYwppbmRleCAwNDI4MjZhLi42MmZmMDNkIDEwMDY0NAotLS0gYS9zcmMvZWRpdC5jCisrKyBiL3NyYy9lZGl0LmMKQEAgLTQ2NywxNSArNDY3LDYgQEAKIAogICAgIGlmIChjbWRjaGFyID09ICdSJykKICAgICB7Ci0jaWZkZWYgRkVBVF9GS01BUAotCWlmIChwX2ZrbWFwICYmIHBfcmkpCi0JewotCSAgICBiZWVwX2ZsdXNoKCk7Ci0JICAgIGVtc2coZmFyc2lfdGV4dF8zKTsJICAgIC8qIGVuY29kZWQgaW4gRmFyc2kgKi8KLQkgICAgU3RhdGUgPSBJTlNFUlQ7Ci0JfQotCWVsc2UKLSNlbmRpZgogCVN0YXRlID0gUkVQTEFDRTsKICAgICB9CiAgICAgZWxzZSBpZiAoY21kY2hhciA9PSAnVicgfHwgY21kY2hhciA9PSAndicpCkBAIC04MTIsMTAgKzgwMyw2IEBACiAJaWYgKHBfaGttYXAgJiYgS2V5VHlwZWQpCiAJICAgIGMgPSBoa21hcChjKTsJCS8qIEhlYnJldyBtb2RlIG1hcHBpbmcgKi8KICNlbmRpZgotI2lmZGVmIEZFQVRfRktNQVAKLQlpZiAocF9ma21hcCAmJiBLZXlUeXBlZCkKLQkgICAgYyA9IGZrbWFwKGMpOwkJLyogRmFyc2kgbW9kZSBtYXBwaW5nICovCi0jZW5kaWYKIAogI2lmZGVmIEZFQVRfSU5TX0VYUEFORAogCS8qCkBAIC02MjgxLDkgKzYyNjgsNiBAQAogCQkmJiAhSVNTUEVDSUFMKGMpCiAJCSYmICghaGFzX21ieXRlIHx8IE1CX0JZVEUyTEVOX0NIRUNLKGMpID09IDEpCiAJCSYmIGkgPCBJTlBVVF9CVUZMRU4KLSMgaWZkZWYgRkVBVF9GS01BUAotCQkmJiAhKHBfZmttYXAgJiYgS2V5VHlwZWQpIC8qIEZhcnNpIG1vZGUgbWFwcGluZyBtb3ZlcyBjdXJzb3IgKi8KLSMgZW5kaWYKIAkJJiYgKHRleHR3aWR0aCA9PSAwCiAJCSAgICB8fCAodmlydGNvbCArPSBieXRlMmNlbGxzKGJ1ZltpIC0gMV0pKSA8IChjb2xucl9UKXRleHR3aWR0aCkKIAkJJiYgISghbm9fYWJiciAmJiAhdmltX2lzd29yZGMoYykgJiYgdmltX2lzd29yZGMoYnVmW2kgLSAxXSkpKQpAQCAtODQwNiwyMyArODM5MCw3IEBACiAgICAgfQogICAgIGVsc2UKIAlyZXZpbnNfc2NvbCA9IC0xOwotI2lmZGVmIEZFQVRfRktNQVAKLSAgICBpZiAocF9hbHRrZXltYXApCi0gICAgewotCS8qCi0JICogdG8gYmUgY29uc2lzdGVudCBhbHNvIGZvciByZWRvIGNvbW1hbmQsIHVzaW5nICcuJwotCSAqIHNldCBhcnJvd191c2VkIHRvIHRydWUgYW5kIHN0b3AgaXQgLSBjYXVzaW5nIHRvIHJlZG8KLQkgKiBjaGFyYWN0ZXJzIGVudGVyZWQgaW4gb25lIG1vZGUgKG5vcm1hbC9yZXZlcnNlIGluc2VydCkuCi0JICovCi0JYXJyb3dfdXNlZCA9IFRSVUU7Ci0JKHZvaWQpc3RvcF9hcnJvdygpOwotCXBfZmttYXAgPSBjdXJ3aW4tPndfcF9ybCBeIHBfcmk7Ci0JaWYgKHBfZmttYXAgJiYgcF9yaSkKLQkgICAgU3RhdGUgPSBJTlNFUlQ7Ci0gICAgfQotICAgIGVsc2UKLSNlbmRpZgotCXBfaGttYXAgPSBjdXJ3aW4tPndfcF9ybCBeIHBfcmk7ICAgIC8qIGJlIGNvbnNpc3RlbnQhICovCisgICAgcF9oa21hcCA9IGN1cndpbi0+d19wX3JsIF4gcF9yaTsgICAgLy8gYmUgY29uc2lzdGVudCEKICAgICBzaG93bW9kZSgpOwogfQogI2VuZGlmCkBAIC04NDg4LDIxICs4NDU2LDEyIEBACiAgICAgc3RhdGljIHZvaWQKIGluc19pbnNlcnQoaW50IHJlcGxhY2VTdGF0ZSkKIHsKLSNpZmRlZiBGRUFUX0ZLTUFQCi0gICAgaWYgKHBfZmttYXAgJiYgcF9yaSkKLSAgICB7Ci0JYmVlcF9mbHVzaCgpOwotCWVtc2coZmFyc2lfdGV4dF8zKTsJLyogZW5jb2RlZCBpbiBGYXJzaSAqLwotCXJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotIyBpZmRlZiBGRUFUX0VWQUwKKyNpZmRlZiBGRUFUX0VWQUwKICAgICBzZXRfdmltX3Zhcl9zdHJpbmcoVlZfSU5TRVJUTU9ERSwKIAkJICAgKGNoYXJfdSAqKSgoU3RhdGUgJiBSRVBMQUNFX0ZMQUcpID8gImkiCiAJCSAgICAgICAgICA6IHJlcGxhY2VTdGF0ZSA9PSBWUkVQTEFDRSA/ICJ2IgogCQkJCQkJICAgICA6ICJyIiksIDEpOwotIyBlbmRpZgorI2VuZGlmCiAgICAgaW5zX2FwcGx5X2F1dG9jbWRzKEVWRU5UX0lOU0VSVENIQU5HRSk7CiAgICAgaWYgKFN0YXRlICYgUkVQTEFDRV9GTEFHKQogCVN0YXRlID0gSU5TRVJUIHwgKFN0YXRlICYgTEFOR01BUCk7CkBAIC05OTE2LDEwICs5ODc1LDYgQEAKIAljb2xhZHZhbmNlKGdldHZpc2NvbCgpKTsKIAogI2lmZGVmIEZFQVRfUklHSFRMRUZUCi0jIGlmZGVmIEZFQVRfRktNQVAKLSAgICBpZiAocF9hbHRrZXltYXAgJiYgcF9ma21hcCkKLQlma21hcChOTCk7Ci0jIGVuZGlmCiAgICAgLyogTkwgaW4gcmV2ZXJzZSBpbnNlcnQgd2lsbCBhbHdheXMgc3RhcnQgaW4gdGhlIGVuZCBvZgogICAgICAqIGN1cnJlbnQgbGluZS4gKi8KICAgICBpZiAocmV2aW5zX29uKQpkaWZmIC0tZ2l0IGEvc3JjL2V2YWxmdW5jLmMgYi9zcmMvZXZhbGZ1bmMuYwppbmRleCBmMWNiOWRjLi5lOWY2MzQyIDEwMDY0NAotLS0gYS9zcmMvZXZhbGZ1bmMuYworKysgYi9zcmMvZXZhbGZ1bmMuYwpAQCAtNjI2OCw5ICs2MjY4LDYgQEAKICNpZmRlZiBGRUFUX1NFQVJDSF9FWFRSQQogCSJleHRyYV9zZWFyY2giLAogI2VuZGlmCi0jaWZkZWYgRkVBVF9GS01BUAotCSJmYXJzaSIsCi0jZW5kaWYKICNpZmRlZiBGRUFUX1NFQVJDSFBBVEgKIAkiZmlsZV9pbl9wYXRoIiwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2V4X2NtZHMuYyBiL3NyYy9leF9jbWRzLmMKaW5kZXggZTlmYTk0Zi4uNzliOWJjMSAxMDA2NDQKLS0tIGEvc3JjL2V4X2NtZHMuYworKysgYi9zcmMvZXhfY21kcy5jCkBAIC00OTExLDEwICs0OTExLDYgQEAKIAl9CiAJZWxzZQkJLyogZmluZCB0aGUgZW5kIG9mIHRoZSByZWdleHAgKi8KIAl7Ci0jaWZkZWYgRkVBVF9GS01BUAkvKiByZXZlcnNlIHRoZSBmbG93IG9mIHRoZSBGYXJzaSBjaGFyYWN0ZXJzICovCi0JICAgIGlmIChwX2FsdGtleW1hcCAmJiBjdXJ3aW4tPndfcF9ybCkKLQkJbHJGX3N1YihjbWQpOwotI2VuZGlmCiAJICAgIHdoaWNoX3BhdCA9IFJFX0xBU1Q7CSAgICAvKiB1c2UgbGFzdCB1c2VkIHJlZ2V4cCAqLwogCSAgICBkZWxpbWl0ZXIgPSAqY21kKys7CQkgICAgLyogcmVtZW1iZXIgZGVsaW1pdGVyIGNoYXJhY3RlciAqLwogCSAgICBwYXQgPSBjbWQ7CQkJICAgIC8qIHJlbWVtYmVyIHN0YXJ0IG9mIHNlYXJjaCBwYXQgKi8KQEAgLTYwNzAsMTEgKzYwNjYsNiBAQAogCSAgICAqY21kKysgPSBOVUw7CQkgICAgLyogcmVwbGFjZSBpdCB3aXRoIGEgTlVMICovCiAgICAgfQogCi0jaWZkZWYgRkVBVF9GS01BUAkvKiB3aGVuIGluIEZhcnNpIG1vZGUsIHJldmVyc2UgdGhlIGNoYXJhY3RlciBmbG93ICovCi0gICAgaWYgKHBfYWx0a2V5bWFwICYmIGN1cndpbi0+d19wX3JsKQotCWxyRnN3YXAocGF0LDApOwotI2VuZGlmCi0KICAgICBpZiAoc2VhcmNoX3JlZ2NvbXAocGF0LCBSRV9CT1RILCB3aGljaF9wYXQsIFNFQVJDSF9ISVMsICZyZWdtYXRjaCkgPT0gRkFJTCkKICAgICB7CiAJZW1zZyhfKGVfaW52Y21kKSk7CmRpZmYgLS1naXQgYS9zcmMvZXhfZ2V0bG4uYyBiL3NyYy9leF9nZXRsbi5jCmluZGV4IGNiYTA4MmEuLjAwOTY3MzcgMTAwNjQ0Ci0tLSBhL3NyYy9leF9nZXRsbi5jCisrKyBiL3NyYy9leF9nZXRsbi5jCkBAIC04MSwxMCArODEsNiBAQAogc3RhdGljIGludAljbWRfaGttYXAgPSAwOwkvKiBIZWJyZXcgbWFwcGluZyBkdXJpbmcgY29tbWFuZCBsaW5lICovCiAjZW5kaWYKIAotI2lmZGVmIEZFQVRfRktNQVAKLXN0YXRpYyBpbnQJY21kX2ZrbWFwID0gMDsJLyogRmFyc2kgbWFwcGluZyBkdXJpbmcgY29tbWFuZCBsaW5lICovCi0jZW5kaWYKLQogc3RhdGljIGNoYXJfdQkqZ2V0Y21kbGluZV9pbnQoaW50IGZpcnN0YywgbG9uZyBjb3VudCwgaW50IGluZGVudCwgaW50IGluaXRfY2NsaW5lKTsKIHN0YXRpYyBpbnQJY21kbGluZV9jaGFyc2l6ZShpbnQgaWR4KTsKIHN0YXRpYyB2b2lkCXNldF9jbWRzcG9zKHZvaWQpOwpAQCAtMTA0MywxMCArMTAzOSw2IEBACiAjaWZkZWYgRkVBVF9SSUdIVExFRlQKIAkgICAgaWYgKGNtZF9oa21hcCkKIAkJYyA9IGhrbWFwKGMpOwotIyBpZmRlZiBGRUFUX0ZLTUFQCi0JICAgIGlmIChjbWRfZmttYXApCi0JCWMgPSBjbWRsX2ZrbWFwKGMpOwotIyBlbmRpZgogCSAgICBpZiAoY21kbXNnX3JsICYmICFLZXlTdHVmZmVkKQogCSAgICB7CiAJCS8qIEludmVydCBob3Jpem9udGFsIG1vdmVtZW50cyBhbmQgb3BlcmF0aW9ucy4gIE9ubHkgd2hlbgpAQCAtMTU5NSwxMCArMTU4Nyw2IEBACiAJY2FzZSBLX0RFTDoKIAljYXNlIEtfS0RFTDoKIAljYXNlIEN0cmxfVzoKLSNpZmRlZiBGRUFUX0ZLTUFQCi0JCWlmIChjbWRfZmttYXAgJiYgYyA9PSBLX0JTKQotCQkgICAgYyA9IEtfREVMOwotI2VuZGlmCiAJCWlmIChjID09IEtfS0RFTCkKIAkJICAgIGMgPSBLX0RFTDsKIApAQCAtMTY5NCwxMyArMTY4Miw2IEBACiAKIAljYXNlIEtfSU5TOgogCWNhc2UgS19LSU5TOgotI2lmZGVmIEZFQVRfRktNQVAKLQkJLyogaWYgRmFyc2kgbW9kZSBzZXQsIHdlIGFyZSBpbiByZXZlcnNlIGluc2VydCBtb2RlIC0KLQkJICAgRG8gbm90IGNoYW5nZSB0aGUgbW9kZSAqLwotCQlpZiAoY21kX2ZrbWFwKQotCQkgICAgYmVlcF9mbHVzaCgpOwotCQllbHNlCi0jZW5kaWYKIAkJY2NsaW5lLm92ZXJzdHJpa2UgPSAhY2NsaW5lLm92ZXJzdHJpa2U7CiAjaWZkZWYgQ1VSU09SX1NIQVBFCiAJCXVpX2N1cnNvcl9zaGFwZSgpOwkvKiBtYXkgc2hvdyBkaWZmZXJlbnQgY3Vyc29yIHNoYXBlICovCkBAIC0yMzA5LDE2ICsyMjkwLDcgQEAKIAljYXNlIEN0cmxfXzoJICAgIC8qIENUUkwtXzogc3dpdGNoIGxhbmd1YWdlIG1vZGUgKi8KIAkJaWYgKCFwX2FyaSkKIAkJICAgIGJyZWFrOwotIyBpZmRlZiBGRUFUX0ZLTUFQCi0JCWlmIChwX2FsdGtleW1hcCkKLQkJewotCQkgICAgY21kX2ZrbWFwID0gIWNtZF9ma21hcDsKLQkJICAgIGlmIChjbWRfZmttYXApCS8qIGluIEZhcnNpIGFsd2F5cyBpbiBJbnNlcnQgbW9kZSAqLwotCQkJY2NsaW5lLm92ZXJzdHJpa2UgPSBGQUxTRTsKLQkJfQotCQllbHNlCQkJICAgIC8qIEhlYnJldyBpcyBkZWZhdWx0ICovCi0jIGVuZGlmCi0JCSAgICBjbWRfaGttYXAgPSAhY21kX2hrbWFwOworCQljbWRfaGttYXAgPSAhY21kX2hrbWFwOwogCQlnb3RvIGNtZGxpbmVfbm90X2NoYW5nZWQ7CiAjZW5kaWYKIApAQCAtMjQyMSwxMCArMjM5Myw2IEBACiAgICAgY21kbXNnX3JsID0gRkFMU0U7CiAjZW5kaWYKIAotI2lmZGVmIEZFQVRfRktNQVAKLSAgICBjbWRfZmttYXAgPSAwOwotI2VuZGlmCi0KICAgICBFeHBhbmRDbGVhbnVwKCZ4cGMpOwogICAgIGNjbGluZS54cGMgPSBOVUxMOwogCkBAIC0zNDYzLDQ0ICszNDMxLDM1IEBACiAJCW1zZ19jbHJfZW9zKCk7CiAJICAgIG1zZ19ub19tb3JlID0gRkFMU0U7CiAJfQotI2lmZGVmIEZFQVRfRktNQVAKLQkvKgotCSAqIElmIHdlIGFyZSBpbiBGYXJzaSBjb21tYW5kIG1vZGUsIHRoZSBjaGFyYWN0ZXIgaW5wdXQgbXVzdCBiZSBpbgotCSAqIEluc2VydCBtb2RlLiBTbyBkbyBub3QgYWR2YW5jZSB0aGUgY21kcG9zLgotCSAqLwotCWlmICghY21kX2ZrbWFwKQotI2VuZGlmCisJaWYgKEtleVR5cGVkKQogCXsKLQkgICAgaWYgKEtleVR5cGVkKQotCSAgICB7Ci0JCW0gPSBDb2x1bW5zICogUm93czsKLQkJaWYgKG0gPCAwKQkvKiBvdmVyZmxvdywgQ29sdW1ucyBvciBSb3dzIGF0IHdlaXJkIHZhbHVlICovCi0JCSAgICBtID0gTUFYQ09MOwotCSAgICB9Ci0JICAgIGVsc2UKKwkgICAgbSA9IENvbHVtbnMgKiBSb3dzOworCSAgICBpZiAobSA8IDApCS8qIG92ZXJmbG93LCBDb2x1bW5zIG9yIFJvd3MgYXQgd2VpcmQgdmFsdWUgKi8KIAkJbSA9IE1BWENPTDsKLQkgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQotCSAgICB7Ci0JCWMgPSBjbWRsaW5lX2NoYXJzaXplKGNjbGluZS5jbWRwb3MpOwotCQkvKiBjb3VudCAiPiIgZm9yIGEgZG91YmxlLXdpZGUgY2hhciB0aGF0IGRvZXNuJ3QgZml0LiAqLwotCQlpZiAoaGFzX21ieXRlKQotCQkgICAgY29ycmVjdF9jbWRzcG9zKGNjbGluZS5jbWRwb3MsIGMpOwotCQkvKiBTdG9wIGN1cnNvciBhdCB0aGUgZW5kIG9mIHRoZSBzY3JlZW4sIGJ1dCBkbyBpbmNyZW1lbnQgdGhlCi0JCSAqIGluc2VydCBwb3NpdGlvbiwgc28gdGhhdCBlbnRlcmluZyBhIHZlcnkgbG9uZyBjb21tYW5kCi0JCSAqIHdvcmtzLCBldmVuIHRob3VnaCB5b3UgY2FuJ3Qgc2VlIGl0LiAqLwotCQlpZiAoY2NsaW5lLmNtZHNwb3MgKyBjIDwgbSkKLQkJICAgIGNjbGluZS5jbWRzcG9zICs9IGM7CisJfQorCWVsc2UKKwkgICAgbSA9IE1BWENPTDsKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCisJeworCSAgICBjID0gY21kbGluZV9jaGFyc2l6ZShjY2xpbmUuY21kcG9zKTsKKwkgICAgLyogY291bnQgIj4iIGZvciBhIGRvdWJsZS13aWRlIGNoYXIgdGhhdCBkb2Vzbid0IGZpdC4gKi8KKwkgICAgaWYgKGhhc19tYnl0ZSkKKwkJY29ycmVjdF9jbWRzcG9zKGNjbGluZS5jbWRwb3MsIGMpOworCSAgICAvKiBTdG9wIGN1cnNvciBhdCB0aGUgZW5kIG9mIHRoZSBzY3JlZW4sIGJ1dCBkbyBpbmNyZW1lbnQgdGhlCisJICAgICAqIGluc2VydCBwb3NpdGlvbiwgc28gdGhhdCBlbnRlcmluZyBhIHZlcnkgbG9uZyBjb21tYW5kCisJICAgICAqIHdvcmtzLCBldmVuIHRob3VnaCB5b3UgY2FuJ3Qgc2VlIGl0LiAqLworCSAgICBpZiAoY2NsaW5lLmNtZHNwb3MgKyBjIDwgbSkKKwkJY2NsaW5lLmNtZHNwb3MgKz0gYzsKIAotCQlpZiAoaGFzX21ieXRlKQotCQl7Ci0JCSAgICBjID0gKCptYl9wdHIybGVuKShjY2xpbmUuY21kYnVmZiArIGNjbGluZS5jbWRwb3MpIC0gMTsKLQkJICAgIGlmIChjID4gbGVuIC0gaSAtIDEpCi0JCQljID0gbGVuIC0gaSAtIDE7Ci0JCSAgICBjY2xpbmUuY21kcG9zICs9IGM7Ci0JCSAgICBpICs9IGM7Ci0JCX0KLQkJKytjY2xpbmUuY21kcG9zOworCSAgICBpZiAoaGFzX21ieXRlKQorCSAgICB7CisJCWMgPSAoKm1iX3B0cjJsZW4pKGNjbGluZS5jbWRidWZmICsgY2NsaW5lLmNtZHBvcykgLSAxOworCQlpZiAoYyA+IGxlbiAtIGkgLSAxKQorCQkgICAgYyA9IGxlbiAtIGkgLSAxOworCQljY2xpbmUuY21kcG9zICs9IGM7CisJCWkgKz0gYzsKIAkgICAgfQorCSAgICArK2NjbGluZS5jbWRwb3M7CiAJfQogICAgIH0KICAgICBpZiAocmVkcmF3KQpAQCAtNzEyNiwzNSArNzA4NSw2IEBACiB9CiAjZW5kaWYgLyogRkVBVF9WSU1JTkZPICovCiAKLSNpZiBkZWZpbmVkKEZFQVRfRktNQVApIHx8IGRlZmluZWQoUFJPVE8pCi0vKgotICogV3JpdGUgYSBjaGFyYWN0ZXIgYXQgdGhlIGN1cnJlbnQgY3Vyc29yK29mZnNldCBwb3NpdGlvbi4KLSAqIEl0IGlzIGRpcmVjdGx5IHdyaXR0ZW4gaW50byB0aGUgY29tbWFuZCBidWZmZXIgYmxvY2suCi0gKi8KLSAgICB2b2lkCi1jbWRfcGNoYXIoaW50IGMsIGludCBvZmZzZXQpCi17Ci0gICAgaWYgKGNjbGluZS5jbWRwb3MgKyBvZmZzZXQgPj0gY2NsaW5lLmNtZGxlbiB8fCBjY2xpbmUuY21kcG9zICsgb2Zmc2V0IDwgMCkKLSAgICB7Ci0JZW1zZyhfKCJFMTk4OiBjbWRfcGNoYXIgYmV5b25kIHRoZSBjb21tYW5kIGxlbmd0aCIpKTsKLQlyZXR1cm47Ci0gICAgfQotICAgIGNjbGluZS5jbWRidWZmW2NjbGluZS5jbWRwb3MgKyBvZmZzZXRdID0gKGNoYXJfdSljOwotICAgIGNjbGluZS5jbWRidWZmW2NjbGluZS5jbWRsZW5dID0gTlVMOwotfQotCi0gICAgaW50Ci1jbWRfZ2NoYXIoaW50IG9mZnNldCkKLXsKLSAgICBpZiAoY2NsaW5lLmNtZHBvcyArIG9mZnNldCA+PSBjY2xpbmUuY21kbGVuIHx8IGNjbGluZS5jbWRwb3MgKyBvZmZzZXQgPCAwKQotICAgIHsKLQkvLyBlbXNnKF8oImNtZF9nY2hhciBiZXlvbmQgdGhlIGNvbW1hbmQgbGVuZ3RoIikpOwotCXJldHVybiBOVUw7Ci0gICAgfQotICAgIHJldHVybiAoaW50KWNjbGluZS5jbWRidWZmW2NjbGluZS5jbWRwb3MgKyBvZmZzZXRdOwotfQotI2VuZGlmCi0KICNpZiBkZWZpbmVkKEZFQVRfQ01EV0lOKSB8fCBkZWZpbmVkKFBST1RPKQogLyoKICAqIE9wZW4gYSB3aW5kb3cgb24gdGhlIGN1cnJlbnQgY29tbWFuZCBsaW5lIGFuZCBoaXN0b3J5LiAgQWxsb3cgZWRpdGluZyBpbgpkaWZmIC0tZ2l0IGEvc3JjL2ZhcnNpLmMgYi9zcmMvZmFyc2kuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhkZDk5MS4uMDAwMDAwMAotLS0gYS9zcmMvZmFyc2kuYworKysgL2Rldi9udWxsCkBAIC0xLDIxNzkgKzAsMCBAQAotLyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NCBub2V0OgotICoKLSAqIFZJTSAtIFZpIElNcHJvdmVkCWJ5IEJyYW0gTW9vbGVuYWFyCi0gKgotICogRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGNvcHlpbmcgYW5kIHVzYWdlIGNvbmRpdGlvbnMuCi0gKiBEbyAiOmhlbHAgY3JlZGl0cyIgaW4gVmltIHRvIHNlZSBhIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZC4KLSAqIFNlZSBSRUFETUUudHh0IGZvciBhbiBvdmVydmlldyBvZiB0aGUgVmltIHNvdXJjZSBjb2RlLgotICovCi0KLS8qCi0gKiBmYXJzaS5jOiBmdW5jdGlvbnMgZm9yIEZhcnNpIGxhbmd1YWdlCi0gKi8KLQotI2luY2x1ZGUgInZpbS5oIgotCi0jaWYgZGVmaW5lZChGRUFUX0ZLTUFQKSB8fCBkZWZpbmVkKFBST1RPKQotCi1zdGF0aWMgaW50IEZfaXNfVHlCX1R5Q19UeUQoaW50IHNyYywgaW50IG9mZnNldCk7Ci0KLS8qCi0gKiBDb252ZXJ0IHRoZSBnaXZlbiBGYXJzaSBjaGFyYWN0ZXIgaW50byBhIF9YIG9yIF9YXyB0eXBlCi0gKi8KLSAgICBzdGF0aWMgaW50Ci10b0ZfWG9yX1hfKGludCBjKQotewotICAgIGludCB0ZW1wYzsKLQotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSBCRTogcmV0dXJuIF9CRTsKLQljYXNlIFBFOiByZXR1cm4gX1BFOwotCWNhc2UgVEU6IHJldHVybiBfVEU7Ci0JY2FzZSBTRTogcmV0dXJuIF9TRTsKLQljYXNlIEpJTTogcmV0dXJuIF9KSU07Ci0JY2FzZSBDSEU6IHJldHVybiBfQ0hFOwotCWNhc2UgSEVfSjogcmV0dXJuIF9IRV9KOwotCWNhc2UgWEU6IHJldHVybiBfWEU7Ci0JY2FzZSBTSU46IHJldHVybiBfU0lOOwotCWNhc2UgU0hJTjogcmV0dXJuIF9TSElOOwotCWNhc2UgU0FEOiByZXR1cm4gX1NBRDsKLQljYXNlIFpBRDogcmV0dXJuIF9aQUQ7Ci0JY2FzZSBBWU46IHJldHVybiBfQVlOOwotCWNhc2UgQVlOXzogcmV0dXJuIF9BWU5fOwotCWNhc2UgR0hBWU46IHJldHVybiBfR0hBWU47Ci0JY2FzZSBHSEFZTl86IHJldHVybiBfR0hBWU5fOwotCWNhc2UgRkU6IHJldHVybiBfRkU7Ci0JY2FzZSBHSEFGOiByZXR1cm4gX0dIQUY7Ci0JY2FzZSBLQUY6IHJldHVybiBfS0FGOwotCWNhc2UgR0FGOiByZXR1cm4gX0dBRjsKLQljYXNlIExBTTogcmV0dXJuIF9MQU07Ci0JY2FzZSBNSU06IHJldHVybiBfTUlNOwotCWNhc2UgTk9PTjogcmV0dXJuIF9OT09OOwotCWNhc2UgWUU6Ci0JY2FzZSBZRV86IHJldHVybiBfWUU7Ci0JY2FzZSBZRUU6Ci0JY2FzZSBZRUVfOiByZXR1cm4gX1lFRTsKLQljYXNlIElFOgotCWNhc2UgSUVfOiByZXR1cm4gX0lFOwotCWNhc2UgRl9IRToKLQkJdGVtcGMgPSBfSEU7Ci0KLQkJaWYgKHBfcmkgJiYgKGN1cndpbi0+d19jdXJzb3IuY29sICsgMQotCQkJCQkgPCAoY29sbnJfVClTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpKQotCQl7Ci0JCSAgICBpbmNfY3Vyc29yKCk7Ci0KLQkJICAgIGlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpCi0JCQl0ZW1wYyA9IF9IRV87Ci0KLQkJICAgIGRlY19jdXJzb3IoKTsKLQkJfQotCQlpZiAoIXBfcmkgJiYgU1RSTEVOKG1sX2dldF9jdXJsaW5lKCkpKQotCQl7Ci0JCSAgICBkZWNfY3Vyc29yKCk7Ci0KLQkJICAgIGlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpCi0JCQl0ZW1wYyA9IF9IRV87Ci0KLQkJICAgIGluY19jdXJzb3IoKTsKLQkJfQotCi0JCXJldHVybiB0ZW1wYzsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBDb252ZXJ0IHRoZSBnaXZlbiBGYXJzaSBjaGFyYWN0ZXIgaW50byBGYXJzaSBjYXBpdGFsIGNoYXJhY3Rlci4KLSAqLwotICAgIHN0YXRpYyBpbnQKLXRvRl9UeUEoaW50IGMpCi17Ci0gICAgc3dpdGNoIChjKQotICAgIHsKLQljYXNlIEFMRUZfOiByZXR1cm4gQUxFRjsKLQljYXNlIEFMRUZfVV9IXzogcmV0dXJuIEFMRUZfVV9IOwotCWNhc2UgX0JFOiByZXR1cm4gQkU7Ci0JY2FzZSBfUEU6IHJldHVybiBQRTsKLQljYXNlIF9URTogcmV0dXJuIFRFOwotCWNhc2UgX1NFOiByZXR1cm4gU0U7Ci0JY2FzZSBfSklNOiByZXR1cm4gSklNOwotCWNhc2UgX0NIRTogcmV0dXJuIENIRTsKLQljYXNlIF9IRV9KOiByZXR1cm4gSEVfSjsKLQljYXNlIF9YRTogcmV0dXJuIFhFOwotCWNhc2UgX1NJTjogcmV0dXJuIFNJTjsKLQljYXNlIF9TSElOOiByZXR1cm4gU0hJTjsKLQljYXNlIF9TQUQ6IHJldHVybiBTQUQ7Ci0JY2FzZSBfWkFEOiByZXR1cm4gWkFEOwotCWNhc2UgX0FZTjoKLQljYXNlIEFZTl86Ci0JY2FzZSBfQVlOXzogcmV0dXJuIEFZTjsKLQljYXNlIF9HSEFZTjoKLQljYXNlIEdIQVlOXzoKLQljYXNlIF9HSEFZTl86IHJldHVybiBHSEFZTjsKLQljYXNlIF9GRTogcmV0dXJuIEZFOwotCWNhc2UgX0dIQUY6IHJldHVybiBHSEFGOwotCS8qIEkgYW0gbm90IHN1cmUgd2hhdCBpdCBpcyAhISEJICAgIGNhc2UgX0tBRl9IOiAqLwotCWNhc2UgX0tBRjogcmV0dXJuIEtBRjsKLQljYXNlIF9HQUY6IHJldHVybiBHQUY7Ci0JY2FzZSBfTEFNOiByZXR1cm4gTEFNOwotCWNhc2UgX01JTTogcmV0dXJuIE1JTTsKLQljYXNlIF9OT09OOiByZXR1cm4gTk9PTjsKLQljYXNlIF9ZRToKLQljYXNlIFlFXzogcmV0dXJuIFlFOwotCWNhc2UgX1lFRToKLQljYXNlIFlFRV86IHJldHVybiBZRUU7Ci0JY2FzZSBURUVfOiByZXR1cm4gVEVFOwotCWNhc2UgX0lFOgotCWNhc2UgSUVfOiByZXR1cm4gSUU7Ci0JY2FzZSBfSEU6Ci0JY2FzZSBfSEVfOiByZXR1cm4gRl9IRTsKLSAgICB9Ci0gICAgcmV0dXJuIGM7Ci19Ci0KLS8qCi0gKiBJcyB0aGUgY2hhcmFjdGVyIHVuZGVyIHRoZSBjdXJzb3Irb2Zmc2V0IGluIHRoZSBnaXZlbiBidWZmZXIgYSBqb2luIHR5cGUuCi0gKiBUaGF0IGlzIGEgY2hhcmFjdGVyIHRoYXQgaXMgY29tYmluZWQgd2l0aCB0aGUgb3RoZXJzLgotICogTm90ZTogdGhlIG9mZnNldCBpcyB1c2VkIG9ubHkgZm9yIGNvbW1hbmQgbGluZSBidWZmZXIuCi0gKi8KLSAgICBzdGF0aWMgaW50Ci1GX2lzX1R5Ql9UeUNfVHlEKGludCBzcmMsIGludCBvZmZzZXQpCi17Ci0gICAgaW50CQljOwotCi0gICAgaWYgKHNyYyA9PSBTUkNfRURUKQotCWMgPSBnY2hhcl9jdXJzb3IoKTsKLSAgICBlbHNlCi0JYyA9IGNtZF9nY2hhcihBVF9DVVJTT1Irb2Zmc2V0KTsKLQotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSBfTEFNOgotCWNhc2UgX0JFOgotCWNhc2UgX1BFOgotCWNhc2UgX1RFOgotCWNhc2UgX1NFOgotCWNhc2UgX0pJTToKLQljYXNlIF9DSEU6Ci0JY2FzZSBfSEVfSjoKLQljYXNlIF9YRToKLQljYXNlIF9TSU46Ci0JY2FzZSBfU0hJTjoKLQljYXNlIF9TQUQ6Ci0JY2FzZSBfWkFEOgotCWNhc2UgX1RBOgotCWNhc2UgX1pBOgotCWNhc2UgX0FZTjoKLQljYXNlIF9BWU5fOgotCWNhc2UgX0dIQVlOOgotCWNhc2UgX0dIQVlOXzoKLQljYXNlIF9GRToKLQljYXNlIF9HSEFGOgotCWNhc2UgX0tBRjoKLQljYXNlIF9LQUZfSDoKLQljYXNlIF9HQUY6Ci0JY2FzZSBfTUlNOgotCWNhc2UgX05PT046Ci0JY2FzZSBfWUU6Ci0JY2FzZSBfWUVFOgotCWNhc2UgX0lFOgotCWNhc2UgX0hFXzoKLQljYXNlIF9IRToKLQkJcmV0dXJuIFRSVUU7Ci0gICAgfQotICAgIHJldHVybiBGQUxTRTsKLX0KLQotLyoKLSAqIElzIHRoZSBGYXJzaSBjaGFyYWN0ZXIgb25lIG9mIHRoZSB0ZXJtaW5hdGluZyBvbmx5IHR5cGUuCi0gKi8KLSAgICBzdGF0aWMgaW50Ci1GX2lzX1R5RShpbnQgYykKLXsKLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgQUxFRl9BOgotCWNhc2UgQUxFRl9EX0g6Ci0JY2FzZSBEQUw6Ci0JY2FzZSBaQUw6Ci0JY2FzZSBSRToKLQljYXNlIFpFOgotCWNhc2UgSkU6Ci0JY2FzZSBXQVc6Ci0JY2FzZSBXQVdfSDoKLQljYXNlIEhBTVpFOgotCQlyZXR1cm4gVFJVRTsKLSAgICB9Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi0vKgotICogSXMgdGhlIEZhcnNpIGNoYXJhY3RlciBvbmUgb2YgdGhlIG5vbmUgbGVhZGluZyB0eXBlLgotICovCi0gICAgc3RhdGljIGludAotRl9pc19UeUNfVHlEKGludCBjKQotewotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSBBTEVGXzoKLQljYXNlIEFMRUZfVV9IXzoKLQljYXNlIF9BWU5fOgotCWNhc2UgQVlOXzoKLQljYXNlIF9HSEFZTl86Ci0JY2FzZSBHSEFZTl86Ci0JY2FzZSBfSEVfOgotCWNhc2UgWUVfOgotCWNhc2UgSUVfOgotCWNhc2UgVEVFXzoKLQljYXNlIFlFRV86Ci0JCXJldHVybiBUUlVFOwotICAgIH0KLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLS8qCi0gKiBDb252ZXJ0IGEgbm9uZSBsZWFkaW5nIEZhcnNpIGNoYXIgaW50byBhIGxlYWRpbmcgdHlwZS4KLSAqLwotICAgIHN0YXRpYyBpbnQKLXRvRl9UeUIoaW50IGMpCi17Ci0gICAgc3dpdGNoIChjKQotICAgIHsKLQljYXNlIEFMRUZfOglyZXR1cm4gQUxFRjsKLQljYXNlIEFMRUZfVV9IXzoJcmV0dXJuIEFMRUZfVV9IOwotCWNhc2UgX0FZTl86CXJldHVybiBfQVlOOwotCWNhc2UgQVlOXzoJcmV0dXJuIEFZTjsJLyogZXhjZXB0aW9uIC0gdGhlcmUgYXJlIG1hbnkgb2YgdGhlbSAqLwotCWNhc2UgX0dIQVlOXzoJcmV0dXJuIF9HSEFZTjsKLQljYXNlIEdIQVlOXzoJcmV0dXJuIEdIQVlOOwkvKiBleGNlcHRpb24gLSB0aGVyZSBhcmUgbWFueSBvZiB0aGVtICovCi0JY2FzZSBfSEVfOglyZXR1cm4gX0hFOwotCWNhc2UgWUVfOglyZXR1cm4gWUU7Ci0JY2FzZSBJRV86CXJldHVybiBJRTsKLQljYXNlIFRFRV86CXJldHVybiBURUU7Ci0JY2FzZSBZRUVfOglyZXR1cm4gWUVFOwotICAgIH0KLSAgICByZXR1cm4gYzsKLX0KLQotCi0gICAgc3RhdGljIHZvaWQKLXB1dF9hbmRfcmVkbyhpbnQgYykKLXsKLSAgICBwY2hhcl9jdXJzb3IoYyk7Ci0gICAgQXBwZW5kQ2hhclRvUmVkb2J1ZmYoS19CUyk7Ci0gICAgQXBwZW5kQ2hhclRvUmVkb2J1ZmYoYyk7Ci19Ci0KLS8qCi0gKiBPdmVyd3JpdGUgdGhlIGN1cnJlbnQgcmVkbyBhbmQgY3Vyc29yIGNoYXJhY3RlcnMgKyBsZWZ0IGFkanVzdC4KLSAqLwotICAgIHN0YXRpYyB2b2lkCi1wdXRfY3Vycl9hbmRfbF90b19YKGludCBjKQotewotICAgIGludAl0ZW1wYzsKLQotICAgIGlmIChjdXJ3aW4tPndfcF9ybCAmJiBwX3JpKQotCXJldHVybjsKLQotICAgIGlmICgoY3Vyd2luLT53X2N1cnNvci5jb2wgPCAoY29sbnJfVClTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpKQotICAgIHsKLQlpZiAoKHBfcmkgJiYgY3Vyd2luLT53X2N1cnNvci5jb2wpIHx8ICFwX3JpKQotCXsKLQkgICAgaWYgKHBfcmkpCi0JCWRlY19jdXJzb3IoKTsKLQkgICAgZWxzZQotCQlpbmNfY3Vyc29yKCk7Ci0KLQkgICAgaWYgKEZfaXNfVHlDX1R5RCgodGVtcGMgPSBnY2hhcl9jdXJzb3IoKSkpKQotCSAgICB7Ci0JCXBjaGFyX2N1cnNvcih0b0ZfVHlCKHRlbXBjKSk7Ci0JCUFwcGVuZENoYXJUb1JlZG9idWZmKEtfQlMpOwotCQlBcHBlbmRDaGFyVG9SZWRvYnVmZih0ZW1wYyk7Ci0JICAgIH0KLQotCSAgICBpZiAocF9yaSkKLQkJaW5jX2N1cnNvcigpOwotCSAgICBlbHNlCi0JCWRlY19jdXJzb3IoKTsKLQl9Ci0gICAgfQotCi0gICAgcHV0X2FuZF9yZWRvKGMpOwotfQotCi0vKgotICogQ2hhbmdlIHRoZSBjaGFyLiB1bmRlciB0aGUgY3Vyc29yIHRvIGEgWF8gb3IgWCB0eXBlCi0gKi8KLSAgICBzdGF0aWMgdm9pZAotY2hnX2NfdG9YX29yWCh2b2lkKQotewotICAgIGludAl0ZW1wYywgY3VyYzsKLQotICAgIHN3aXRjaCAoKGN1cmMgPSBnY2hhcl9jdXJzb3IoKSkpCi0gICAgewotCWNhc2UgX0JFOgotCQl0ZW1wYyA9IEJFOwotCQlicmVhazsKLQljYXNlIF9QRToKLQkJdGVtcGMgPSBQRTsKLQkJYnJlYWs7Ci0JY2FzZSBfVEU6Ci0JCXRlbXBjID0gVEU7Ci0JCWJyZWFrOwotCWNhc2UgX1NFOgotCQl0ZW1wYyA9IFNFOwotCQlicmVhazsKLQljYXNlIF9KSU06Ci0JCXRlbXBjID0gSklNOwotCQlicmVhazsKLQljYXNlIF9DSEU6Ci0JCXRlbXBjID0gQ0hFOwotCQlicmVhazsKLQljYXNlIF9IRV9KOgotCQl0ZW1wYyA9IEhFX0o7Ci0JCWJyZWFrOwotCWNhc2UgX1hFOgotCQl0ZW1wYyA9IFhFOwotCQlicmVhazsKLQljYXNlIF9TSU46Ci0JCXRlbXBjID0gU0lOOwotCQlicmVhazsKLQljYXNlIF9TSElOOgotCQl0ZW1wYyA9IFNISU47Ci0JCWJyZWFrOwotCWNhc2UgX1NBRDoKLQkJdGVtcGMgPSBTQUQ7Ci0JCWJyZWFrOwotCWNhc2UgX1pBRDoKLQkJdGVtcGMgPSBaQUQ7Ci0JCWJyZWFrOwotCWNhc2UgX0ZFOgotCQl0ZW1wYyA9IEZFOwotCQlicmVhazsKLQljYXNlIF9HSEFGOgotCQl0ZW1wYyA9IEdIQUY7Ci0JCWJyZWFrOwotCWNhc2UgX0tBRl9IOgotCWNhc2UgX0tBRjoKLQkJdGVtcGMgPSBLQUY7Ci0JCWJyZWFrOwotCWNhc2UgX0dBRjoKLQkJdGVtcGMgPSBHQUY7Ci0JCWJyZWFrOwotCWNhc2UgX0FZTjoKLQkJdGVtcGMgPSBBWU47Ci0JCWJyZWFrOwotCWNhc2UgX0FZTl86Ci0JCXRlbXBjID0gQVlOXzsKLQkJYnJlYWs7Ci0JY2FzZSBfR0hBWU46Ci0JCXRlbXBjID0gR0hBWU47Ci0JCWJyZWFrOwotCWNhc2UgX0dIQVlOXzoKLQkJdGVtcGMgPSBHSEFZTl87Ci0JCWJyZWFrOwotCWNhc2UgX0xBTToKLQkJdGVtcGMgPSBMQU07Ci0JCWJyZWFrOwotCWNhc2UgX01JTToKLQkJdGVtcGMgPSBNSU07Ci0JCWJyZWFrOwotCWNhc2UgX05PT046Ci0JCXRlbXBjID0gTk9PTjsKLQkJYnJlYWs7Ci0JY2FzZSBfSEU6Ci0JY2FzZSBfSEVfOgotCQl0ZW1wYyA9IEZfSEU7Ci0JCWJyZWFrOwotCWNhc2UgX1lFOgotCWNhc2UgX0lFOgotCWNhc2UgX1lFRToKLQkJaWYgKHBfcmkpCi0JCXsKLQkJICAgIGluY19jdXJzb3IoKTsKLQkJICAgIGlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpCi0JCQkgICAgdGVtcGMgPSAoY3VyYyA9PSBfWUUgPyBZRV8gOgotCQkJICAgIChjdXJjID09IF9JRSA/IElFXyA6IFlFRV8pKTsKLQkJICAgIGVsc2UKLQkJCSAgICB0ZW1wYyA9IChjdXJjID09IF9ZRSA/IFlFIDoKLQkJCSAgICAoY3VyYyA9PSBfSUUgPyBJRSA6IFlFRSkpOwotCQkgICAgZGVjX2N1cnNvcigpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkgICAgaWYgKGN1cndpbi0+d19jdXJzb3IuY29sKQotCQkgICAgewotCQkJZGVjX2N1cnNvcigpOwotCQkJaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0VEVCwgQVRfQ1VSU09SKSkKLQkJCQl0ZW1wYyA9IChjdXJjID09IF9ZRSA/IFlFXyA6Ci0JCQkJKGN1cmMgPT0gX0lFID8gSUVfIDogWUVFXykpOwotCQkJZWxzZQotCQkJCXRlbXBjID0gKGN1cmMgPT0gX1lFID8gWUUgOgotCQkJCShjdXJjID09IF9JRSA/IElFIDogWUVFKSk7Ci0JCQlpbmNfY3Vyc29yKCk7Ci0JCSAgICB9Ci0JCSAgICBlbHNlCi0JCQkgICAgdGVtcGMgPSAoY3VyYyA9PSBfWUUgPyBZRSA6Ci0JCQkgICAgKGN1cmMgPT0gX0lFID8gSUUgOiBZRUUpKTsKLQkJfQotCQlicmVhazsKLQlkZWZhdWx0OgotCQl0ZW1wYyA9IDA7Ci0gICAgfQotCi0gICAgaWYgKHRlbXBjKQotCXB1dF9hbmRfcmVkbyh0ZW1wYyk7Ci19Ci0KLS8qCi0gKiBDaGFuZ2UgdGhlIGNoYXIuIHVuZGVyIHRoZSBjdXJzb3IgdG8gYSBfWF8gb3IgWF8gdHlwZQotICovCi0gICAgc3RhdGljIHZvaWQKLWNoZ19jX3RvX1hfb3JYXyh2b2lkKQotewotICAgIGludAl0ZW1wYzsKLQotICAgIHN3aXRjaCAoZ2NoYXJfY3Vyc29yKCkpCi0gICAgewotCWNhc2UgQUxFRjoKLQkJdGVtcGMgPSBBTEVGXzsKLQkJYnJlYWs7Ci0JY2FzZSBBTEVGX1VfSDoKLQkJdGVtcGMgPSBBTEVGX1VfSF87Ci0JCWJyZWFrOwotCWNhc2UgX0FZTjoKLQkJdGVtcGMgPSBfQVlOXzsKLQkJYnJlYWs7Ci0JY2FzZSBBWU46Ci0JCXRlbXBjID0gQVlOXzsKLQkJYnJlYWs7Ci0JY2FzZSBfR0hBWU46Ci0JCXRlbXBjID0gX0dIQVlOXzsKLQkJYnJlYWs7Ci0JY2FzZSBHSEFZTjoKLQkJdGVtcGMgPSBHSEFZTl87Ci0JCWJyZWFrOwotCWNhc2UgX0hFOgotCQl0ZW1wYyA9IF9IRV87Ci0JCWJyZWFrOwotCWNhc2UgWUU6Ci0JCXRlbXBjID0gWUVfOwotCQlicmVhazsKLQljYXNlIElFOgotCQl0ZW1wYyA9IElFXzsKLQkJYnJlYWs7Ci0JY2FzZSBURUU6Ci0JCXRlbXBjID0gVEVFXzsKLQkJYnJlYWs7Ci0JY2FzZSBZRUU6Ci0JCXRlbXBjID0gWUVFXzsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJdGVtcGMgPSAwOwotICAgIH0KLQotICAgIGlmICh0ZW1wYykKLQlwdXRfYW5kX3JlZG8odGVtcGMpOwotfQotCi0vKgotICogQ2hhbmdlIHRoZSBjaGFyLiB1bmRlciB0aGUgY3Vyc29yIHRvIGEgX1hfIG9yIF9YIHR5cGUKLSAqLwotICAgIHN0YXRpYyB2b2lkCi1jaGdfY190b19YX29yX1godm9pZCkKLXsKLSAgICBpbnQJdGVtcGM7Ci0KLSAgICB0ZW1wYyA9IGdjaGFyX2N1cnNvcigpOwotCi0gICAgaWYgKGN1cndpbi0+d19jdXJzb3IuY29sICsgMSA8IChjb2xucl9UKVNUUkxFTihtbF9nZXRfY3VybGluZSgpKSkKLSAgICB7Ci0JaW5jX2N1cnNvcigpOwotCi0JaWYgKCh0ZW1wYyA9PSBGX0hFKSAmJiAoRl9pc19UeUJfVHlDX1R5RChTUkNfRURULCBBVF9DVVJTT1IpKSkKLQl7Ci0JICAgIHRlbXBjID0gX0hFXzsKLQotCSAgICBkZWNfY3Vyc29yKCk7Ci0KLQkgICAgcHV0X2FuZF9yZWRvKHRlbXBjKTsKLQkgICAgcmV0dXJuOwotCX0KLQotCWRlY19jdXJzb3IoKTsKLSAgICB9Ci0KLSAgICBpZiAoKHRlbXBjID0gdG9GX1hvcl9YXyh0ZW1wYykpICE9IDApCi0JcHV0X2FuZF9yZWRvKHRlbXBjKTsKLX0KLQotLyoKLSAqIENoYW5nZSB0aGUgY2hhcmFjdGVyIGxlZnQgdG8gdGhlIGN1cnNvciB0byBhIF9YXyBvciBYXyB0eXBlCi0gKi8KLSAgICBzdGF0aWMgdm9pZAotY2hnX2xfdG9fWF9vclhfKHZvaWQpCi17Ci0gICAgaW50CXRlbXBjOwotCi0gICAgaWYgKGN1cndpbi0+d19jdXJzb3IuY29sICE9IDAgJiYKLQkoY3Vyd2luLT53X2N1cnNvci5jb2wgKyAxID09IChjb2xucl9UKVNUUkxFTihtbF9nZXRfY3VybGluZSgpKSkpCi0JcmV0dXJuOwotCi0gICAgaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCAmJiBwX3JpKQotCXJldHVybjsKLQotICAgIGlmIChwX3JpKQotCWRlY19jdXJzb3IoKTsKLSAgICBlbHNlCi0JaW5jX2N1cnNvcigpOwotCi0gICAgc3dpdGNoIChnY2hhcl9jdXJzb3IoKSkKLSAgICB7Ci0JY2FzZSBBTEVGOgotCQl0ZW1wYyA9IEFMRUZfOwotCQlicmVhazsKLQljYXNlIEFMRUZfVV9IOgotCQl0ZW1wYyA9IEFMRUZfVV9IXzsKLQkJYnJlYWs7Ci0JY2FzZSBfQVlOOgotCQl0ZW1wYyA9IF9BWU5fOwotCQlicmVhazsKLQljYXNlIEFZTjoKLQkJdGVtcGMgPSBBWU5fOwotCQlicmVhazsKLQljYXNlIF9HSEFZTjoKLQkJdGVtcGMgPSBfR0hBWU5fOwotCQlicmVhazsKLQljYXNlIEdIQVlOOgotCQl0ZW1wYyA9IEdIQVlOXzsKLQkJYnJlYWs7Ci0JY2FzZSBfSEU6Ci0JCXRlbXBjID0gX0hFXzsKLQkJYnJlYWs7Ci0JY2FzZSBZRToKLQkJdGVtcGMgPSBZRV87Ci0JCWJyZWFrOwotCWNhc2UgSUU6Ci0JCXRlbXBjID0gSUVfOwotCQlicmVhazsKLQljYXNlIFRFRToKLQkJdGVtcGMgPSBURUVfOwotCQlicmVhazsKLQljYXNlIFlFRToKLQkJdGVtcGMgPSBZRUVfOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQl0ZW1wYyA9IDA7Ci0gICAgfQotCi0gICAgaWYgKHRlbXBjKQotCXB1dF9hbmRfcmVkbyh0ZW1wYyk7Ci0KLSAgICBpZiAocF9yaSkKLQlpbmNfY3Vyc29yKCk7Ci0gICAgZWxzZQotCWRlY19jdXJzb3IoKTsKLX0KLQotLyoKLSAqIENoYW5nZSB0aGUgY2hhcmFjdGVyIGxlZnQgdG8gdGhlIGN1cnNvciB0byBhIFggb3IgX1ggdHlwZQotICovCi0gICAgc3RhdGljIHZvaWQKLWNoZ19sX3RvWG9yX1godm9pZCkKLXsKLSAgICBpbnQJdGVtcGM7Ci0KLSAgICBpZiAoY3Vyd2luLT53X2N1cnNvci5jb2wgIT0gMCAmJgotCShjdXJ3aW4tPndfY3Vyc29yLmNvbCArIDEgPT0gKGNvbG5yX1QpU1RSTEVOKG1sX2dldF9jdXJsaW5lKCkpKSkKLQlyZXR1cm47Ci0KLSAgICBpZiAoIWN1cndpbi0+d19jdXJzb3IuY29sICYmIHBfcmkpCi0JcmV0dXJuOwotCi0gICAgaWYgKHBfcmkpCi0JZGVjX2N1cnNvcigpOwotICAgIGVsc2UKLQlpbmNfY3Vyc29yKCk7Ci0KLSAgICBzd2l0Y2ggKGdjaGFyX2N1cnNvcigpKQotICAgIHsKLQljYXNlIEFMRUZfOgotCQl0ZW1wYyA9IEFMRUY7Ci0JCWJyZWFrOwotCWNhc2UgQUxFRl9VX0hfOgotCQl0ZW1wYyA9IEFMRUZfVV9IOwotCQlicmVhazsKLQljYXNlIF9BWU5fOgotCQl0ZW1wYyA9IF9BWU47Ci0JCWJyZWFrOwotCWNhc2UgQVlOXzoKLQkJdGVtcGMgPSBBWU47Ci0JCWJyZWFrOwotCWNhc2UgX0dIQVlOXzoKLQkJdGVtcGMgPSBfR0hBWU47Ci0JCWJyZWFrOwotCWNhc2UgR0hBWU5fOgotCQl0ZW1wYyA9IEdIQVlOOwotCQlicmVhazsKLQljYXNlIF9IRV86Ci0JCXRlbXBjID0gX0hFOwotCQlicmVhazsKLQljYXNlIFlFXzoKLQkJdGVtcGMgPSBZRTsKLQkJYnJlYWs7Ci0JY2FzZSBJRV86Ci0JCXRlbXBjID0gSUU7Ci0JCWJyZWFrOwotCWNhc2UgVEVFXzoKLQkJdGVtcGMgPSBURUU7Ci0JCWJyZWFrOwotCWNhc2UgWUVFXzoKLQkJdGVtcGMgPSBZRUU7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXRlbXBjID0gMDsKLSAgICB9Ci0KLSAgICBpZiAodGVtcGMpCi0JcHV0X2FuZF9yZWRvKHRlbXBjKTsKLQotICAgIGlmIChwX3JpKQotCWluY19jdXJzb3IoKTsKLSAgICBlbHNlCi0JZGVjX2N1cnNvcigpOwotfQotCi0vKgotICogQ2hhbmdlIHRoZSBjaGFyYWN0ZXIgcmlnaHQgdG8gdGhlIGN1cnNvciB0byBhIF9YIG9yIF9YXyB0eXBlCi0gKi8KLSAgICBzdGF0aWMgdm9pZAotY2hnX3JfdG9fWG9yX1hfKHZvaWQpCi17Ci0gICAgaW50IHRlbXBjLCBjOwotCi0gICAgaWYgKGN1cndpbi0+d19jdXJzb3IuY29sKQotICAgIHsKLQlpZiAoIXBfcmkpCi0JICAgIGRlY19jdXJzb3IoKTsKLQotCXRlbXBjID0gZ2NoYXJfY3Vyc29yKCk7Ci0KLQlpZiAoKGMgPSB0b0ZfWG9yX1hfKHRlbXBjKSkgIT0gMCkKLQkgICAgcHV0X2FuZF9yZWRvKGMpOwotCi0JaWYgKCFwX3JpKQotCSAgICBpbmNfY3Vyc29yKCk7Ci0KLSAgICB9Ci19Ci0KLS8qCi0gKiBNYXAgRmFyc2kga2V5Ym9hcmQgd2hlbiBpbiBma21hcCBtb2RlLgotICovCi0gICAgaW50Ci1ma21hcChpbnQgYykKLXsKLSAgICBpbnQJCXRlbXBjOwotICAgIGludAkJaW5zZXJ0X21vZGUgPSAoU3RhdGUgJiBJTlNFUlQpOwotICAgIHN0YXRpYyBpbnQJcmV2aW5zID0gMDsKLQotICAgIGlmIChJU19TUEVDSUFMKGMpKQotCXJldHVybiBjOwotCi0gICAgaWYgKGluc2VydF9tb2RlKQotICAgIHsKLQlpZiAoVklNX0lTRElHSVQoYykgfHwgKChjID09ICcuJyB8fCBjID09ICcrJyB8fCBjID09ICctJyB8fAotCSAgICBjID09ICdeJyB8fCBjID09ICclJyB8fCBjID09ICcjJyB8fCBjID09ICc9JykgJiYgcmV2aW5zKSkKLQl7Ci0JICAgIC8qIE51bWJlcnMgYXJlIGVudGVyZWQgbGVmdC10by1yaWdodC4gKi8KLQkgICAgaWYgKCFyZXZpbnMpCi0JICAgIHsKLQkJaWYgKGN1cndpbi0+d19jdXJzb3IuY29sKQotCQl7Ci0JCSAgICBpZiAoIXBfcmkpCi0JCQlkZWNfY3Vyc29yKCk7Ci0KLQkJICAgIGNoZ19jX3RvWF9vclggKCk7Ci0JCSAgICBjaGdfbF90b1hvcl9YICgpOwotCi0JCSAgICBpZiAoIXBfcmkpCi0JCQlpbmNfY3Vyc29yKCk7Ci0JCX0KLQkgICAgfQotCi0JICAgIGFycm93X3VzZWQgPSBUUlVFOwotCSAgICAodm9pZClzdG9wX2Fycm93KCk7Ci0KLQkgICAgaWYgKCFjdXJ3aW4tPndfcF9ybCAmJiByZXZpbnMpCi0JCWluY19jdXJzb3IoKTsKLQotCSAgICArK3JldmluczsKLQkgICAgcF9yaSA9IDE7Ci0JfQotCWVsc2UgaWYgKHJldmlucykKLQl7Ci0JICAgIC8qIFN0b3AgZW50ZXJpbmcgbnVtYmVyLiAqLwotCSAgICBhcnJvd191c2VkID0gVFJVRTsKLQkgICAgKHZvaWQpc3RvcF9hcnJvdygpOwotCi0JICAgIHJldmlucyA9IDA7Ci0JICAgIGlmIChjdXJ3aW4tPndfcF9ybCkKLQkgICAgewotCQl3aGlsZSAoKEZfaXNkaWdpdChnY2hhcl9jdXJzb3IoKSkKLQkJCSAgICB8fCAoZ2NoYXJfY3Vyc29yKCkgPT0gRl9QRVJJT0QKLQkJCQl8fCBnY2hhcl9jdXJzb3IoKSA9PSBGX1BMVVMKLQkJCQl8fCBnY2hhcl9jdXJzb3IoKSA9PSBGX01JTlVTCi0JCQkJfHwgZ2NoYXJfY3Vyc29yKCkgPT0gRl9NVUwKLQkJCQl8fCBnY2hhcl9jdXJzb3IoKSA9PSBGX0RJVklERQotCQkJCXx8IGdjaGFyX2N1cnNvcigpID09IEZfUEVSQ0VOVAotCQkJCXx8IGdjaGFyX2N1cnNvcigpID09IEZfRVFVQUxTKSkKLQkJCSYmIGdjaGFyX2N1cnNvcigpICE9IE5VTCkKLQkJICAgICsrY3Vyd2luLT53X2N1cnNvci5jb2w7Ci0JICAgIH0KLQkgICAgZWxzZQotCSAgICB7Ci0JCWlmIChjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJICAgIHdoaWxlICgoRl9pc2RpZ2l0KGdjaGFyX2N1cnNvcigpKQotCQkJICAgIHx8IChnY2hhcl9jdXJzb3IoKSA9PSBGX1BFUklPRAotCQkJCXx8IGdjaGFyX2N1cnNvcigpID09IEZfUExVUwotCQkJCXx8IGdjaGFyX2N1cnNvcigpID09IEZfTUlOVVMKLQkJCQl8fCBnY2hhcl9jdXJzb3IoKSA9PSBGX01VTAotCQkJCXx8IGdjaGFyX2N1cnNvcigpID09IEZfRElWSURFCi0JCQkJfHwgZ2NoYXJfY3Vyc29yKCkgPT0gRl9QRVJDRU5UCi0JCQkJfHwgZ2NoYXJfY3Vyc29yKCkgPT0gRl9FUVVBTFMpKQotCQkJICAgICYmIC0tY3Vyd2luLT53X2N1cnNvci5jb2wpCi0JCQk7Ci0KLQkJaWYgKCFGX2lzZGlnaXQoZ2NoYXJfY3Vyc29yKCkpKQotCQkgICAgKytjdXJ3aW4tPndfY3Vyc29yLmNvbDsKLQkgICAgfQotCX0KLSAgICB9Ci0KLSAgICBpZiAoIXJldmlucykKLSAgICB7Ci0JaWYgKGN1cndpbi0+d19wX3JsKQotCSAgICBwX3JpID0gMDsKLQlpZiAoIWN1cndpbi0+d19wX3JsKQotCSAgICBwX3JpID0gMTsKLSAgICB9Ci0KLSAgICBpZiAoKGMgPCAweDEwMCkgJiYgKGlzYWxwaGEoYykgfHwgYyA9PSAnJicgfHwgYyA9PSAnXicgfHwJYyA9PSAnOycgfHwKLQkJCSAgICBjID09ICdcJyd8fAljID09ICcsJyB8fCBjID09ICdbJyB8fAotCQkJICAgIGMgPT0gJ10nIHx8CWMgPT0gJ3snIHx8IGMgPT0gJ30nKSkKLQljaGdfcl90b19Yb3JfWF8oKTsKLQotICAgIHRlbXBjID0gMDsKLQotICAgIHN3aXRjaCAoYykKLSAgICB7Ci0JY2FzZSAnYCc6Ci0JY2FzZSAnICc6Ci0JY2FzZSAnLic6Ci0JY2FzZSAnISc6Ci0JY2FzZSAnIic6Ci0JY2FzZSAnJCc6Ci0JY2FzZSAnJSc6Ci0JY2FzZSAnXic6Ci0JY2FzZSAnJic6Ci0JY2FzZSAnLyc6Ci0JY2FzZSAnKCc6Ci0JY2FzZSAnKSc6Ci0JY2FzZSAnPSc6Ci0JY2FzZSAnXFwnOgotCWNhc2UgJz8nOgotCWNhc2UgJysnOgotCWNhc2UgJy0nOgotCWNhc2UgJ18nOgotCWNhc2UgJyonOgotCWNhc2UgJzonOgotCWNhc2UgJyMnOgotCWNhc2UgJ34nOgotCWNhc2UgJ0AnOgotCWNhc2UgJzwnOgotCWNhc2UgJz4nOgotCWNhc2UgJ3snOgotCWNhc2UgJ30nOgotCWNhc2UgJ3wnOgotCWNhc2UgJzAnOgotCWNhc2UgJzEnOgotCWNhc2UgJzInOgotCWNhc2UgJzMnOgotCWNhc2UgJzQnOgotCWNhc2UgJzUnOgotCWNhc2UgJzYnOgotCWNhc2UgJzcnOgotCWNhc2UgJzgnOgotCWNhc2UgJzknOgotCWNhc2UgJ0InOgotCWNhc2UgJ0UnOgotCWNhc2UgJ0YnOgotCWNhc2UgJ0gnOgotCWNhc2UgJ0knOgotCWNhc2UgJ0snOgotCWNhc2UgJ0wnOgotCWNhc2UgJ00nOgotCWNhc2UgJ08nOgotCWNhc2UgJ1AnOgotCWNhc2UgJ1EnOgotCWNhc2UgJ1InOgotCWNhc2UgJ1QnOgotCWNhc2UgJ1UnOgotCWNhc2UgJ1cnOgotCWNhc2UgJ1knOgotCWNhc2UgIE5MOgotCWNhc2UgIFRBQjoKLQotCSAgICBpZiAocF9yaSAmJiBjID09IE5MICYmIGN1cndpbi0+d19jdXJzb3IuY29sICYmIGluc2VydF9tb2RlKQotCSAgICB7Ci0JCS8qCi0JCSAqIElmIHRoZSBjaGFyIGJlZm9yZSB0aGUgY3Vyc29yIGlzIF9YXyBvciBYXyBkbyBub3QgY2hhbmdlCi0JCSAqIHRoZSBvbmUgdW5kZXIgdGhlIGN1cnNvciB3aXRoIFggdHlwZS4KLQkJICovCi0JCWRlY19jdXJzb3IoKTsKLQotCQlpZiAoRl9pc2FscGhhKGdjaGFyX2N1cnNvcigpKSkKLQkJewotCQkgICAgaW5jX2N1cnNvcigpOwotCQkgICAgcmV0dXJuIE5MOwotCQl9Ci0KLQkJaW5jX2N1cnNvcigpOwotCSAgICB9Ci0KLQkgICAgaWYgKCFwX3JpICYmICFjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkgICAgewotCQlzd2l0Y2ggKGMpCi0JCXsKLQkJICAgIGNhc2UgJzAnOglyZXR1cm4gRkFSU0lfMDsKLQkJICAgIGNhc2UgJzEnOglyZXR1cm4gRkFSU0lfMTsKLQkJICAgIGNhc2UgJzInOglyZXR1cm4gRkFSU0lfMjsKLQkJICAgIGNhc2UgJzMnOglyZXR1cm4gRkFSU0lfMzsKLQkJICAgIGNhc2UgJzQnOglyZXR1cm4gRkFSU0lfNDsKLQkJICAgIGNhc2UgJzUnOglyZXR1cm4gRkFSU0lfNTsKLQkJICAgIGNhc2UgJzYnOglyZXR1cm4gRkFSU0lfNjsKLQkJICAgIGNhc2UgJzcnOglyZXR1cm4gRkFSU0lfNzsKLQkJICAgIGNhc2UgJzgnOglyZXR1cm4gRkFSU0lfODsKLQkJICAgIGNhc2UgJzknOglyZXR1cm4gRkFSU0lfOTsKLQkJICAgIGNhc2UgJ0InOglyZXR1cm4gRl9QU1A7Ci0JCSAgICBjYXNlICdFJzoJcmV0dXJuIEpBWlJfTjsKLQkJICAgIGNhc2UgJ0YnOglyZXR1cm4gQUxFRl9EX0g7Ci0JCSAgICBjYXNlICdIJzoJcmV0dXJuIEFMRUZfQTsKLQkJICAgIGNhc2UgJ0knOglyZXR1cm4gVEFTSDsKLQkJICAgIGNhc2UgJ0snOglyZXR1cm4gRl9MUVVPVDsKLQkJICAgIGNhc2UgJ0wnOglyZXR1cm4gRl9SUVVPVDsKLQkJICAgIGNhc2UgJ00nOglyZXR1cm4gSEFNWkU7Ci0JCSAgICBjYXNlICdPJzoJcmV0dXJuICdbJzsKLQkJICAgIGNhc2UgJ1AnOglyZXR1cm4gJ10nOwotCQkgICAgY2FzZSAnUSc6CXJldHVybiBPTzsKLQkJICAgIGNhc2UgJ1InOglyZXR1cm4gTUFEX047Ci0JCSAgICBjYXNlICdUJzoJcmV0dXJuIE9XOwotCQkgICAgY2FzZSAnVSc6CXJldHVybiBNQUQ7Ci0JCSAgICBjYXNlICdXJzoJcmV0dXJuIE9XX09XOwotCQkgICAgY2FzZSAnWSc6CXJldHVybiBKQVpSOwotCQkgICAgY2FzZSAnYCc6CXJldHVybiBGX1BDTjsKLQkJICAgIGNhc2UgJyEnOglyZXR1cm4gRl9FWENMOwotCQkgICAgY2FzZSAnQCc6CXJldHVybiBGX0NPTU1BOwotCQkgICAgY2FzZSAnIyc6CXJldHVybiBGX0RJVklERTsKLQkJICAgIGNhc2UgJyQnOglyZXR1cm4gRl9DVVJSRU5DWTsKLQkJICAgIGNhc2UgJyUnOglyZXR1cm4gRl9QRVJDRU5UOwotCQkgICAgY2FzZSAnXic6CXJldHVybiBGX01VTDsKLQkJICAgIGNhc2UgJyYnOglyZXR1cm4gRl9CQ09NTUE7Ci0JCSAgICBjYXNlICcqJzoJcmV0dXJuIEZfU1RBUjsKLQkJICAgIGNhc2UgJygnOglyZXR1cm4gRl9MUEFSRU5UOwotCQkgICAgY2FzZSAnKSc6CXJldHVybiBGX1JQQVJFTlQ7Ci0JCSAgICBjYXNlICctJzoJcmV0dXJuIEZfTUlOVVM7Ci0JCSAgICBjYXNlICdfJzoJcmV0dXJuIEZfVU5ERVJMSU5FOwotCQkgICAgY2FzZSAnPSc6CXJldHVybiBGX0VRVUFMUzsKLQkJICAgIGNhc2UgJysnOglyZXR1cm4gRl9QTFVTOwotCQkgICAgY2FzZSAnXFwnOglyZXR1cm4gRl9CU0xBU0g7Ci0JCSAgICBjYXNlICd8JzoJcmV0dXJuIEZfUElQRTsKLQkJICAgIGNhc2UgJzonOglyZXR1cm4gRl9EQ09MT047Ci0JCSAgICBjYXNlICciJzoJcmV0dXJuIEZfU0VNSUNPTE9OOwotCQkgICAgY2FzZSAnLic6CXJldHVybiBGX1BFUklPRDsKLQkJICAgIGNhc2UgJy8nOglyZXR1cm4gRl9TTEFTSDsKLQkJICAgIGNhc2UgJzwnOglyZXR1cm4gRl9MRVNTOwotCQkgICAgY2FzZSAnPic6CXJldHVybiBGX0dSRUFURVI7Ci0JCSAgICBjYXNlICc/JzoJcmV0dXJuIEZfUVVFU1RJT047Ci0JCSAgICBjYXNlICcgJzoJcmV0dXJuIEZfQkxBTks7Ci0JCX0KLQkJYnJlYWs7Ci0JICAgIH0KLQotCSAgICBpZiAoaW5zZXJ0X21vZGUpCi0JICAgIHsKLQkJaWYgKCFwX3JpKQotCQkgICAgZGVjX2N1cnNvcigpOwotCi0JCXN3aXRjaCAoKHRlbXBjID0gZ2NoYXJfY3Vyc29yKCkpKQotCQl7Ci0JCSAgICBjYXNlIF9CRToKLQkJICAgIGNhc2UgX1BFOgotCQkgICAgY2FzZSBfVEU6Ci0JCSAgICBjYXNlIF9TRToKLQkJICAgIGNhc2UgX0pJTToKLQkJICAgIGNhc2UgX0NIRToKLQkJICAgIGNhc2UgX0hFX0o6Ci0JCSAgICBjYXNlIF9YRToKLQkJICAgIGNhc2UgX1NJTjoKLQkJICAgIGNhc2UgX1NISU46Ci0JCSAgICBjYXNlIF9TQUQ6Ci0JCSAgICBjYXNlIF9aQUQ6Ci0JCSAgICBjYXNlIF9GRToKLQkJICAgIGNhc2UgX0dIQUY6Ci0JCSAgICBjYXNlIF9LQUY6Ci0JCSAgICBjYXNlIF9LQUZfSDoKLQkJICAgIGNhc2UgX0dBRjoKLQkJICAgIGNhc2UgX0xBTToKLQkJICAgIGNhc2UgX01JTToKLQkJICAgIGNhc2UgX05PT046Ci0JCSAgICBjYXNlIF9IRToKLQkJICAgIGNhc2UgX0hFXzoKLQkJICAgIGNhc2UgX1RBOgotCQkgICAgY2FzZSBfWkE6Ci0JCQkgICAgcHV0X2N1cnJfYW5kX2xfdG9fWCh0b0ZfVHlBKHRlbXBjKSk7Ci0JCQkgICAgYnJlYWs7Ci0JCSAgICBjYXNlIF9BWU46Ci0JCSAgICBjYXNlIF9BWU5fOgotCi0JCQkgICAgaWYgKCFwX3JpKQotCQkJCWlmICghY3Vyd2luLT53X2N1cnNvci5jb2wpCi0JCQkJewotCQkJCSAgICBwdXRfY3Vycl9hbmRfbF90b19YKEFZTik7Ci0JCQkJICAgIGJyZWFrOwotCQkJCX0KLQotCQkJICAgIGlmIChwX3JpKQotCQkJCWluY19jdXJzb3IoKTsKLQkJCSAgICBlbHNlCi0JCQkJZGVjX2N1cnNvcigpOwotCi0JCQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0VEVCwgQVRfQ1VSU09SKSkKLQkJCQl0ZW1wYyA9IEFZTl87Ci0JCQkgICAgZWxzZQotCQkJCXRlbXBjID0gQVlOOwotCi0JCQkgICAgaWYgKHBfcmkpCi0JCQkJZGVjX2N1cnNvcigpOwotCQkJICAgIGVsc2UKLQkJCQlpbmNfY3Vyc29yKCk7Ci0KLQkJCSAgICBwdXRfY3Vycl9hbmRfbF90b19YKHRlbXBjKTsKLQotCQkJICAgIGJyZWFrOwotCQkgICAgY2FzZSBfR0hBWU46Ci0JCSAgICBjYXNlIF9HSEFZTl86Ci0KLQkJCSAgICBpZiAoIXBfcmkpCi0JCQkJaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJCQl7Ci0JCQkJICAgIHB1dF9jdXJyX2FuZF9sX3RvX1goR0hBWU4pOwotCQkJCSAgICBicmVhazsKLQkJCQl9Ci0KLQkJCSAgICBpZiAocF9yaSkKLQkJCQlpbmNfY3Vyc29yKCk7Ci0JCQkgICAgZWxzZQotCQkJCWRlY19jdXJzb3IoKTsKLQotCQkJICAgIGlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpCi0JCQkJdGVtcGMgPSBHSEFZTl87Ci0JCQkgICAgZWxzZQotCQkJCXRlbXBjID0gR0hBWU47Ci0KLQkJCSAgICBpZiAocF9yaSkKLQkJCQlkZWNfY3Vyc29yKCk7Ci0JCQkgICAgZWxzZQotCQkJCWluY19jdXJzb3IoKTsKLQotCQkJICAgIHB1dF9jdXJyX2FuZF9sX3RvX1godGVtcGMpOwotCQkJICAgIGJyZWFrOwotCQkgICAgY2FzZSBfWUU6Ci0JCSAgICBjYXNlIF9JRToKLQkJICAgIGNhc2UgX1lFRToKLQkJCSAgICBpZiAoIXBfcmkpCi0JCQkJaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJCQl7Ci0JCQkJICAgIHB1dF9jdXJyX2FuZF9sX3RvX1goKHRlbXBjID09IF9ZRSA/IFlFIDoKLQkJCQkJCSh0ZW1wYyA9PSBfSUUgPyBJRSA6IFlFRSkpKTsKLQkJCQkgICAgYnJlYWs7Ci0JCQkJfQotCi0JCQkgICAgaWYgKHBfcmkpCi0JCQkJaW5jX2N1cnNvcigpOwotCQkJICAgIGVsc2UKLQkJCQlkZWNfY3Vyc29yKCk7Ci0KLQkJCSAgICBpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfRURULCBBVF9DVVJTT1IpKQotCQkJCSAgICB0ZW1wYyA9ICh0ZW1wYyA9PSBfWUUgPyBZRV8gOgotCQkJCQkodGVtcGMgPT0gX0lFID8gSUVfIDogWUVFXykpOwotCQkJICAgIGVsc2UKLQkJCQkgICAgdGVtcGMgPSAodGVtcGMgPT0gX1lFID8gWUUgOgotCQkJCQkodGVtcGMgPT0gX0lFID8gSUUgOiBZRUUpKTsKLQotCQkJICAgIGlmIChwX3JpKQotCQkJCWRlY19jdXJzb3IoKTsKLQkJCSAgICBlbHNlCi0JCQkJaW5jX2N1cnNvcigpOwotCi0JCQkgICAgcHV0X2N1cnJfYW5kX2xfdG9fWCh0ZW1wYyk7Ci0JCQkgICAgYnJlYWs7Ci0JCX0KLQotCQlpZiAoIXBfcmkpCi0JCSAgICBpbmNfY3Vyc29yKCk7Ci0JICAgIH0KLQotCSAgICB0ZW1wYyA9IDA7Ci0KLQkgICAgc3dpdGNoIChjKQotCSAgICB7Ci0JCWNhc2UgJzAnOglyZXR1cm4gRkFSU0lfMDsKLQkJY2FzZSAnMSc6CXJldHVybiBGQVJTSV8xOwotCQljYXNlICcyJzoJcmV0dXJuIEZBUlNJXzI7Ci0JCWNhc2UgJzMnOglyZXR1cm4gRkFSU0lfMzsKLQkJY2FzZSAnNCc6CXJldHVybiBGQVJTSV80OwotCQljYXNlICc1JzoJcmV0dXJuIEZBUlNJXzU7Ci0JCWNhc2UgJzYnOglyZXR1cm4gRkFSU0lfNjsKLQkJY2FzZSAnNyc6CXJldHVybiBGQVJTSV83OwotCQljYXNlICc4JzoJcmV0dXJuIEZBUlNJXzg7Ci0JCWNhc2UgJzknOglyZXR1cm4gRkFSU0lfOTsKLQkJY2FzZSAnQic6CXJldHVybiBGX1BTUDsKLQkJY2FzZSAnRSc6CXJldHVybiBKQVpSX047Ci0JCWNhc2UgJ0YnOglyZXR1cm4gQUxFRl9EX0g7Ci0JCWNhc2UgJ0gnOglyZXR1cm4gQUxFRl9BOwotCQljYXNlICdJJzoJcmV0dXJuIFRBU0g7Ci0JCWNhc2UgJ0snOglyZXR1cm4gRl9MUVVPVDsKLQkJY2FzZSAnTCc6CXJldHVybiBGX1JRVU9UOwotCQljYXNlICdNJzoJcmV0dXJuIEhBTVpFOwotCQljYXNlICdPJzoJcmV0dXJuICdbJzsKLQkJY2FzZSAnUCc6CXJldHVybiAnXSc7Ci0JCWNhc2UgJ1EnOglyZXR1cm4gT087Ci0JCWNhc2UgJ1InOglyZXR1cm4gTUFEX047Ci0JCWNhc2UgJ1QnOglyZXR1cm4gT1c7Ci0JCWNhc2UgJ1UnOglyZXR1cm4gTUFEOwotCQljYXNlICdXJzoJcmV0dXJuIE9XX09XOwotCQljYXNlICdZJzoJcmV0dXJuIEpBWlI7Ci0JCWNhc2UgJ2AnOglyZXR1cm4gRl9QQ047Ci0JCWNhc2UgJyEnOglyZXR1cm4gRl9FWENMOwotCQljYXNlICdAJzoJcmV0dXJuIEZfQ09NTUE7Ci0JCWNhc2UgJyMnOglyZXR1cm4gRl9ESVZJREU7Ci0JCWNhc2UgJyQnOglyZXR1cm4gRl9DVVJSRU5DWTsKLQkJY2FzZSAnJSc6CXJldHVybiBGX1BFUkNFTlQ7Ci0JCWNhc2UgJ14nOglyZXR1cm4gRl9NVUw7Ci0JCWNhc2UgJyYnOglyZXR1cm4gRl9CQ09NTUE7Ci0JCWNhc2UgJyonOglyZXR1cm4gRl9TVEFSOwotCQljYXNlICcoJzoJcmV0dXJuIEZfTFBBUkVOVDsKLQkJY2FzZSAnKSc6CXJldHVybiBGX1JQQVJFTlQ7Ci0JCWNhc2UgJy0nOglyZXR1cm4gRl9NSU5VUzsKLQkJY2FzZSAnXyc6CXJldHVybiBGX1VOREVSTElORTsKLQkJY2FzZSAnPSc6CXJldHVybiBGX0VRVUFMUzsKLQkJY2FzZSAnKyc6CXJldHVybiBGX1BMVVM7Ci0JCWNhc2UgJ1xcJzoJcmV0dXJuIEZfQlNMQVNIOwotCQljYXNlICd8JzoJcmV0dXJuIEZfUElQRTsKLQkJY2FzZSAnOic6CXJldHVybiBGX0RDT0xPTjsKLQkJY2FzZSAnIic6CXJldHVybiBGX1NFTUlDT0xPTjsKLQkJY2FzZSAnLic6CXJldHVybiBGX1BFUklPRDsKLQkJY2FzZSAnLyc6CXJldHVybiBGX1NMQVNIOwotCQljYXNlICc8JzoJcmV0dXJuIEZfTEVTUzsKLQkJY2FzZSAnPic6CXJldHVybiBGX0dSRUFURVI7Ci0JCWNhc2UgJz8nOglyZXR1cm4gRl9RVUVTVElPTjsKLQkJY2FzZSAnICc6CXJldHVybiBGX0JMQU5LOwotCSAgICB9Ci0JICAgIGJyZWFrOwotCi0JY2FzZSAnYSc6Ci0JICAgIHRlbXBjID0gX1NISU47Ci0JICAgIGJyZWFrOwotCWNhc2UgJ0EnOgotCSAgICB0ZW1wYyA9IFdBV19IOwotCSAgICBicmVhazsKLQljYXNlICdiJzoKLQkgICAgdGVtcGMgPSBaQUw7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ2MnOgotCSAgICB0ZW1wYyA9IFpFOwotCSAgICBicmVhazsKLQljYXNlICdDJzoKLQkgICAgdGVtcGMgPSBKRTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnZCc6Ci0JICAgIHRlbXBjID0gX1lFOwotCSAgICBicmVhazsKLQljYXNlICdEJzoKLQkgICAgdGVtcGMgPSBfWUVFOwotCSAgICBicmVhazsKLQljYXNlICdlJzoKLQkgICAgdGVtcGMgPSBfU0U7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ2YnOgotCSAgICB0ZW1wYyA9IF9CRTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnZyc6Ci0JICAgIHRlbXBjID0gX0xBTTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnRyc6Ci0JICAgIGlmICghY3Vyd2luLT53X2N1cnNvci5jb2wgICYmICBTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpCi0JICAgIHsKLQotCQlpZiAoZ2NoYXJfY3Vyc29yKCkgPT0gX0xBTSkKLQkJICAgIGNoZ19jX3RvWF9vclggKCk7Ci0JCWVsc2UgaWYgKHBfcmkpCi0JCSAgICBjaGdfY190b19YX29yX1ggKCk7Ci0JICAgIH0KLQotCSAgICBpZiAoIXBfcmkpCi0JCWlmICghY3Vyd2luLT53X2N1cnNvci5jb2wpCi0JCSAgICByZXR1cm4gQUxFRl9VX0g7Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlkZWNfY3Vyc29yKCk7Ci0KLQkgICAgaWYgKGdjaGFyX2N1cnNvcigpID09IF9MQU0pCi0JICAgIHsKLQkJY2hnX2NfdG9YX29yWCAoKTsKLQkJY2hnX2xfdG9Yb3JfWCAoKTsKLQkJdGVtcGMgPSBBTEVGX1VfSDsKLQkgICAgfQotCSAgICBlbHNlIGlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19FRFQsIEFUX0NVUlNPUikpCi0JICAgIHsKLQkJdGVtcGMgPSBBTEVGX1VfSF87Ci0JCWNoZ19sX3RvWG9yX1ggKCk7Ci0JICAgIH0KLQkgICAgZWxzZQotCQl0ZW1wYyA9IEFMRUZfVV9IOwotCi0JICAgIGlmICghcF9yaSkKLQkJaW5jX2N1cnNvcigpOwotCi0JICAgIHJldHVybiB0ZW1wYzsKLQljYXNlICdoJzoKLQkgICAgaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCAgJiYgIFNUUkxFTihtbF9nZXRfY3VybGluZSgpKSkKLQkJewotCQlpZiAocF9yaSkKLQkJICAgIGNoZ19jX3RvX1hfb3JfWCAoKTsKLQotCSAgICB9Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlpZiAoIWN1cndpbi0+d19jdXJzb3IuY29sKQotCQkgICAgcmV0dXJuIEFMRUY7Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlkZWNfY3Vyc29yKCk7Ci0KLQkgICAgaWYgKGdjaGFyX2N1cnNvcigpID09IF9MQU0pCi0JICAgIHsKLQkJY2hnX2xfdG9Yb3JfWCgpOwotCQlkZWxfY2hhcihGQUxTRSk7Ci0JCUFwcGVuZENoYXJUb1JlZG9idWZmKEtfQlMpOwotCi0JCWlmICghcF9yaSkKLQkJICAgIGRlY19jdXJzb3IoKTsKLQotCQl0ZW1wYyA9IExBOwotCSAgICB9Ci0JICAgIGVsc2UKLQkgICAgewotCQlpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfRURULCBBVF9DVVJTT1IpKQotCQl7Ci0JCSAgICB0ZW1wYyA9IEFMRUZfOwotCQkgICAgY2hnX2xfdG9Yb3JfWCAoKTsKLQkJfQotCQllbHNlCi0JCSAgICB0ZW1wYyA9IEFMRUY7Ci0JICAgIH0KLQotCSAgICBpZiAoIXBfcmkpCi0JCWluY19jdXJzb3IoKTsKLQotCSAgICByZXR1cm4gdGVtcGM7Ci0JY2FzZSAnaSc6Ci0JICAgIGlmICghY3Vyd2luLT53X2N1cnNvci5jb2wgJiYgU1RSTEVOKG1sX2dldF9jdXJsaW5lKCkpKQotCSAgICB7Ci0JCWlmICghcF9yaSAmJiAhRl9pc19UeUUodGVtcGMpKQotCQkgICAgY2hnX2NfdG9fWF9vclhfICgpOwotCQlpZiAocF9yaSkKLQkJICAgIGNoZ19jX3RvX1hfb3JfWCAoKTsKLQotCSAgICB9Ci0KLQkgICAgaWYgKCFwX3JpICYmICFjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJcmV0dXJuIF9IRTsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWRlY19jdXJzb3IoKTsKLQotCSAgICBpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfRURULCBBVF9DVVJTT1IpKQotCQl0ZW1wYyA9IF9IRV87Ci0JICAgIGVsc2UKLQkJdGVtcGMgPSBfSEU7Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlpbmNfY3Vyc29yKCk7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ2onOgotCSAgICB0ZW1wYyA9IF9URTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnSic6Ci0JICAgIGlmICghY3Vyd2luLT53X2N1cnNvci5jb2wgICYmICBTVFJMRU4obWxfZ2V0X2N1cmxpbmUoKSkpCi0JICAgIHsKLQkJaWYgKHBfcmkpCi0JCSAgICBjaGdfY190b19YX29yX1ggKCk7Ci0KLQkgICAgfQotCi0JICAgIGlmICghcF9yaSkKLQkJaWYgKCFjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJICAgIHJldHVybiBURUU7Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlkZWNfY3Vyc29yKCk7Ci0KLQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0VEVCwgQVRfQ1VSU09SKSkKLQkgICAgewotCQl0ZW1wYyA9IFRFRV87Ci0JCWNoZ19sX3RvWG9yX1ggKCk7Ci0JICAgIH0KLQkgICAgZWxzZQotCQl0ZW1wYyA9IFRFRTsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWluY19jdXJzb3IoKTsKLQotCSAgICByZXR1cm4gdGVtcGM7Ci0JY2FzZSAnayc6Ci0JICAgIHRlbXBjID0gX05PT047Ci0JICAgIGJyZWFrOwotCWNhc2UgJ2wnOgotCSAgICB0ZW1wYyA9IF9NSU07Ci0JICAgIGJyZWFrOwotCWNhc2UgJ20nOgotCSAgICB0ZW1wYyA9IF9QRTsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnbic6Ci0JY2FzZSAnTic6Ci0JICAgIHRlbXBjID0gREFMOwotCSAgICBicmVhazsKLQljYXNlICdvJzoKLQkgICAgdGVtcGMgPSBfWEU7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ3AnOgotCSAgICB0ZW1wYyA9IF9IRV9KOwotCSAgICBicmVhazsKLQljYXNlICdxJzoKLQkgICAgdGVtcGMgPSBfWkFEOwotCSAgICBicmVhazsKLQljYXNlICdyJzoKLQkgICAgdGVtcGMgPSBfR0hBRjsKLQkgICAgYnJlYWs7Ci0JY2FzZSAncyc6Ci0JICAgIHRlbXBjID0gX1NJTjsKLQkgICAgYnJlYWs7Ci0JY2FzZSAnUyc6Ci0JICAgIHRlbXBjID0gX0lFOwotCSAgICBicmVhazsKLQljYXNlICd0JzoKLQkgICAgdGVtcGMgPSBfRkU7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ3UnOgotCSAgICBpZiAoIWN1cndpbi0+d19jdXJzb3IuY29sICAmJiAgU1RSTEVOKG1sX2dldF9jdXJsaW5lKCkpKQotCSAgICB7Ci0JCWlmICghcF9yaSAmJiAhRl9pc19UeUUodGVtcGMpKQotCQkgICAgY2hnX2NfdG9fWF9vclhfICgpOwotCQlpZiAocF9yaSkKLQkJICAgIGNoZ19jX3RvX1hfb3JfWCAoKTsKLQotCSAgICB9Ci0KLQkgICAgaWYgKCFwX3JpICYmICFjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJcmV0dXJuIF9BWU47Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlkZWNfY3Vyc29yKCk7Ci0KLQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0VEVCwgQVRfQ1VSU09SKSkKLQkJdGVtcGMgPSBfQVlOXzsKLQkgICAgZWxzZQotCQl0ZW1wYyA9IF9BWU47Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlpbmNfY3Vyc29yKCk7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ3YnOgotCWNhc2UgJ1YnOgotCSAgICB0ZW1wYyA9IFJFOwotCSAgICBicmVhazsKLQljYXNlICd3JzoKLQkgICAgdGVtcGMgPSBfU0FEOwotCSAgICBicmVhazsKLQljYXNlICd4JzoKLQljYXNlICdYJzoKLQkgICAgdGVtcGMgPSBfVEE7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ3knOgotCSAgICBpZiAoIWN1cndpbi0+d19jdXJzb3IuY29sICAmJiAgU1RSTEVOKG1sX2dldF9jdXJsaW5lKCkpKQotCSAgICB7Ci0JCWlmICghcF9yaSAmJiAhRl9pc19UeUUodGVtcGMpKQotCQkgICAgY2hnX2NfdG9fWF9vclhfICgpOwotCQlpZiAocF9yaSkKLQkJICAgIGNoZ19jX3RvX1hfb3JfWCAoKTsKLQotCSAgICB9Ci0KLQkgICAgaWYgKCFwX3JpICYmICFjdXJ3aW4tPndfY3Vyc29yLmNvbCkKLQkJcmV0dXJuIF9HSEFZTjsKLQotCSAgICBpZiAoIXBfcmkpCi0JCWRlY19jdXJzb3IoKTsKLQotCSAgICBpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfRURULCBBVF9DVVJTT1IpKQotCQl0ZW1wYyA9IF9HSEFZTl87Ci0JICAgIGVsc2UKLQkJdGVtcGMgPSBfR0hBWU47Ci0KLQkgICAgaWYgKCFwX3JpKQotCQlpbmNfY3Vyc29yKCk7Ci0KLQkgICAgYnJlYWs7Ci0JY2FzZSAneic6Ci0JICAgIHRlbXBjID0gX1pBOwotCSAgICBicmVhazsKLQljYXNlICdaJzoKLQkgICAgdGVtcGMgPSBfS0FGX0g7Ci0JICAgIGJyZWFrOwotCWNhc2UgJzsnOgotCSAgICB0ZW1wYyA9IF9LQUY7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ1wnJzoKLQkgICAgdGVtcGMgPSBfR0FGOwotCSAgICBicmVhazsKLQljYXNlICcsJzoKLQkgICAgdGVtcGMgPSBXQVc7Ci0JICAgIGJyZWFrOwotCWNhc2UgJ1snOgotCSAgICB0ZW1wYyA9IF9KSU07Ci0JICAgIGJyZWFrOwotCWNhc2UgJ10nOgotCSAgICB0ZW1wYyA9IF9DSEU7Ci0JICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChGX2lzYWxwaGEodGVtcGMpIHx8IEZfaXNkaWdpdCh0ZW1wYykpCi0gICAgewotCWlmICghY3Vyd2luLT53X2N1cnNvci5jb2wgJiYgU1RSTEVOKG1sX2dldF9jdXJsaW5lKCkpKQotCXsKLQkgICAgaWYgKCFwX3JpICYmICFGX2lzX1R5RSh0ZW1wYykpCi0JCWNoZ19jX3RvX1hfb3JYXygpOwotCSAgICBpZiAocF9yaSkKLQkJY2hnX2NfdG9fWF9vcl9YKCk7Ci0JfQotCi0JaWYgKGN1cndpbi0+d19jdXJzb3IuY29sKQotCXsKLQkgICAgaWYgKCFwX3JpKQotCQlkZWNfY3Vyc29yKCk7Ci0KLQkgICAgaWYgKEZfaXNfVHlFKHRlbXBjKSkKLQkJY2hnX2xfdG9Yb3JfWCgpOwotCSAgICBlbHNlCi0JCWNoZ19sX3RvX1hfb3JYXygpOwotCi0JICAgIGlmICghcF9yaSkKLQkJaW5jX2N1cnNvcigpOwotCX0KLSAgICB9Ci0gICAgaWYgKHRlbXBjKQotCXJldHVybiB0ZW1wYzsKLSAgICByZXR1cm4gYzsKLX0KLQotLyoKLSAqIENvbnZlcnQgYSBub25lIGxlYWRpbmcgRmFyc2kgY2hhciBpbnRvIGEgbGVhZGluZyB0eXBlLgotICovCi0gICAgc3RhdGljIGludAotdG9GX2xlYWRpbmcoaW50IGMpCi17Ci0gICAgc3dpdGNoIChjKQotICAgIHsKLQljYXNlIEFMRUZfOglyZXR1cm4gQUxFRjsKLQljYXNlIEFMRUZfVV9IXzoJICAgIHJldHVybiBBTEVGX1VfSDsKLQljYXNlIEJFOiAgICByZXR1cm4gX0JFOwotCWNhc2UgUEU6ICAgIHJldHVybiBfUEU7Ci0JY2FzZSBURTogICAgcmV0dXJuIF9URTsKLQljYXNlIFNFOiAgICByZXR1cm4gX1NFOwotCWNhc2UgSklNOiAgIHJldHVybiBfSklNOwotCWNhc2UgQ0hFOiAgIHJldHVybiBfQ0hFOwotCWNhc2UgSEVfSjogIHJldHVybiBfSEVfSjsKLQljYXNlIFhFOiAgICByZXR1cm4gX1hFOwotCWNhc2UgU0lOOiAgIHJldHVybiBfU0lOOwotCWNhc2UgU0hJTjogIHJldHVybiBfU0hJTjsKLQljYXNlIFNBRDogICByZXR1cm4gX1NBRDsKLQljYXNlIFpBRDogICByZXR1cm4gX1pBRDsKLQotCWNhc2UgQVlOOgotCWNhc2UgQVlOXzoKLQljYXNlIF9BWU5fOiByZXR1cm4gX0FZTjsKLQotCWNhc2UgR0hBWU46Ci0JY2FzZSBHSEFZTl86Ci0JY2FzZSBfR0hBWU5fOglyZXR1cm4gX0dIQVlOOwotCi0JY2FzZSBGRTogICAgcmV0dXJuIF9GRTsKLQljYXNlIEdIQUY6ICByZXR1cm4gX0dIQUY7Ci0JY2FzZSBLQUY6ICAgcmV0dXJuIF9LQUY7Ci0JY2FzZSBHQUY6ICAgcmV0dXJuIF9HQUY7Ci0JY2FzZSBMQU06ICAgcmV0dXJuIF9MQU07Ci0JY2FzZSBNSU06ICAgcmV0dXJuIF9NSU07Ci0JY2FzZSBOT09OOiAgcmV0dXJuIF9OT09OOwotCi0JY2FzZSBfSEVfOgotCWNhc2UgRl9IRToJcmV0dXJuIF9IRTsKLQotCWNhc2UgWUU6Ci0JY2FzZSBZRV86CXJldHVybiBfWUU7Ci0KLQljYXNlIElFXzoKLQljYXNlIElFOglyZXR1cm4gX0lFOwotCi0JY2FzZSBZRUU6Ci0JY2FzZSBZRUVfOglyZXR1cm4gX1lFRTsKLSAgICB9Ci0gICAgcmV0dXJuIGM7Ci19Ci0KLS8qCi0gKiBDb252ZXJ0IGEgZ2l2ZW4gRmFyc2kgY2hhciBpbnRvIHJpZ2h0IGpvaW5pbmcgdHlwZS4KLSAqLwotICAgIHN0YXRpYyBpbnQKLXRvRl9Sam9pbihpbnQgYykKLXsKLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgQUxFRjogIHJldHVybiBBTEVGXzsKLQljYXNlIEFMRUZfVV9IOglyZXR1cm4gQUxFRl9VX0hfOwotCWNhc2UgQkU6ICAgIHJldHVybiBfQkU7Ci0JY2FzZSBQRTogICAgcmV0dXJuIF9QRTsKLQljYXNlIFRFOiAgICByZXR1cm4gX1RFOwotCWNhc2UgU0U6ICAgIHJldHVybiBfU0U7Ci0JY2FzZSBKSU06ICAgcmV0dXJuIF9KSU07Ci0JY2FzZSBDSEU6ICAgcmV0dXJuIF9DSEU7Ci0JY2FzZSBIRV9KOiAgcmV0dXJuIF9IRV9KOwotCWNhc2UgWEU6ICAgIHJldHVybiBfWEU7Ci0JY2FzZSBTSU46ICAgcmV0dXJuIF9TSU47Ci0JY2FzZSBTSElOOiAgcmV0dXJuIF9TSElOOwotCWNhc2UgU0FEOiAgIHJldHVybiBfU0FEOwotCWNhc2UgWkFEOiAgIHJldHVybiBfWkFEOwotCi0JY2FzZSBBWU46Ci0JY2FzZSBBWU5fOgotCWNhc2UgX0FZTjogIHJldHVybiBfQVlOXzsKLQotCWNhc2UgR0hBWU46Ci0JY2FzZSBHSEFZTl86Ci0JY2FzZSBfR0hBWU5fOglyZXR1cm4gX0dIQVlOXzsKLQotCWNhc2UgRkU6ICAgIHJldHVybiBfRkU7Ci0JY2FzZSBHSEFGOiAgcmV0dXJuIF9HSEFGOwotCWNhc2UgS0FGOiAgIHJldHVybiBfS0FGOwotCWNhc2UgR0FGOiAgIHJldHVybiBfR0FGOwotCWNhc2UgTEFNOiAgIHJldHVybiBfTEFNOwotCWNhc2UgTUlNOiAgIHJldHVybiBfTUlNOwotCWNhc2UgTk9PTjogIHJldHVybiBfTk9PTjsKLQotCWNhc2UgX0hFOgotCWNhc2UgRl9IRToJcmV0dXJuIF9IRV87Ci0KLQljYXNlIFlFOgotCWNhc2UgWUVfOglyZXR1cm4gX1lFOwotCi0JY2FzZSBJRV86Ci0JY2FzZSBJRToJcmV0dXJuIF9JRTsKLQotCWNhc2UgVEVFOglyZXR1cm4gVEVFXzsKLQotCWNhc2UgWUVFOgotCWNhc2UgWUVFXzoJcmV0dXJuIF9ZRUU7Ci0gICAgfQotICAgIHJldHVybiBjOwotfQotCi0vKgotICogQ2FuIGEgZ2l2ZW4gRmFyc2kgY2hhcmFjdGVyIGpvaW4gdmlhIGl0cyBsZWZ0IGVkai4KLSAqLwotICAgIHN0YXRpYyBpbnQKLWNhbkZfTGpvaW4oaW50IGMpCi17Ci0gICAgc3dpdGNoIChjKQotICAgIHsKLQljYXNlIF9CRToKLQljYXNlIEJFOgotCWNhc2UgUEU6Ci0JY2FzZSBfUEU6Ci0JY2FzZSBURToKLQljYXNlIF9URToKLQljYXNlIFNFOgotCWNhc2UgX1NFOgotCWNhc2UgSklNOgotCWNhc2UgX0pJTToKLQljYXNlIENIRToKLQljYXNlIF9DSEU6Ci0JY2FzZSBIRV9KOgotCWNhc2UgX0hFX0o6Ci0JY2FzZSBYRToKLQljYXNlIF9YRToKLQljYXNlIFNJTjoKLQljYXNlIF9TSU46Ci0JY2FzZSBTSElOOgotCWNhc2UgX1NISU46Ci0JY2FzZSBTQUQ6Ci0JY2FzZSBfU0FEOgotCWNhc2UgWkFEOgotCWNhc2UgX1pBRDoKLQljYXNlIF9UQToKLQljYXNlIF9aQToKLQljYXNlIEFZTjoKLQljYXNlIF9BWU46Ci0JY2FzZSBfQVlOXzoKLQljYXNlIEFZTl86Ci0JY2FzZSBHSEFZTjoKLQljYXNlIEdIQVlOXzoKLQljYXNlIF9HSEFZTl86Ci0JY2FzZSBfR0hBWU46Ci0JY2FzZSBGRToKLQljYXNlIF9GRToKLQljYXNlIEdIQUY6Ci0JY2FzZSBfR0hBRjoKLQljYXNlIF9LQUZfSDoKLQljYXNlIEtBRjoKLQljYXNlIF9LQUY6Ci0JY2FzZSBHQUY6Ci0JY2FzZSBfR0FGOgotCWNhc2UgTEFNOgotCWNhc2UgX0xBTToKLQljYXNlIE1JTToKLQljYXNlIF9NSU06Ci0JY2FzZSBOT09OOgotCWNhc2UgX05PT046Ci0JY2FzZSBJRToKLQljYXNlIF9JRToKLQljYXNlIElFXzoKLQljYXNlIFlFOgotCWNhc2UgX1lFOgotCWNhc2UgWUVfOgotCWNhc2UgWUVFOgotCWNhc2UgX1lFRToKLQljYXNlIFlFRV86Ci0JY2FzZSBGX0hFOgotCWNhc2UgX0hFOgotCWNhc2UgX0hFXzoKLQkgICAgcmV0dXJuIFRSVUU7Ci0gICAgfQotICAgIHJldHVybiBGQUxTRTsKLX0KLQotLyoKLSAqIENhbiBhIGdpdmVuIEZhcnNpIGNoYXJhY3RlciBqb2luIHZpYSBpdHMgcmlnaHQgZWRqLgotICovCi0gICAgc3RhdGljIGludAotY2FuRl9Sam9pbihpbnQgYykKLXsKLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgQUxFRjoKLQljYXNlIEFMRUZfOgotCWNhc2UgQUxFRl9VX0g6Ci0JY2FzZSBBTEVGX1VfSF86Ci0JY2FzZSBEQUw6Ci0JY2FzZSBaQUw6Ci0JY2FzZSBSRToKLQljYXNlIEpFOgotCWNhc2UgWkU6Ci0JY2FzZSBURUU6Ci0JY2FzZSBURUVfOgotCWNhc2UgV0FXOgotCWNhc2UgV0FXX0g6Ci0JICAgIHJldHVybiBUUlVFOwotICAgIH0KLQotICAgIHJldHVybiBjYW5GX0xqb2luKGMpOwotCi19Ci0KLS8qCi0gKiBpcyBhIGdpdmVuIEZhcnNpIGNoYXJhY3RlciBhIHRlcm1pbmF0aW5nIHR5cGUuCi0gKi8KLSAgICBzdGF0aWMgaW50Ci1GX2lzdGVybShpbnQgYykKLXsKLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgQUxFRjoKLQljYXNlIEFMRUZfOgotCWNhc2UgQUxFRl9VX0g6Ci0JY2FzZSBBTEVGX1VfSF86Ci0JY2FzZSBEQUw6Ci0JY2FzZSBaQUw6Ci0JY2FzZSBSRToKLQljYXNlIEpFOgotCWNhc2UgWkU6Ci0JY2FzZSBXQVc6Ci0JY2FzZSBXQVdfSDoKLQljYXNlIFRFRToKLQljYXNlIFRFRV86Ci0JICAgIHJldHVybiBUUlVFOwotICAgIH0KLQotICAgIHJldHVybiBGQUxTRTsKLX0KLQotLyoKLSAqIENvbnZlcnQgdGhlIGdpdmVuIEZhcnNpIGNoYXJhY3RlciBpbnRvIGEgZW5kaW5nIHR5cGUgLgotICovCi0gICAgc3RhdGljIGludAotdG9GX2VuZGluZyhpbnQgYykKLXsKLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgX0JFOiByZXR1cm4gQkU7Ci0JY2FzZSBfUEU6IHJldHVybiBQRTsKLQljYXNlIF9URTogcmV0dXJuIFRFOwotCWNhc2UgX1NFOiByZXR1cm4gU0U7Ci0JY2FzZSBfSklNOiByZXR1cm4gSklNOwotCWNhc2UgX0NIRTogcmV0dXJuIENIRTsKLQljYXNlIF9IRV9KOiByZXR1cm4gSEVfSjsKLQljYXNlIF9YRTogcmV0dXJuIFhFOwotCWNhc2UgX1NJTjogcmV0dXJuIFNJTjsKLQljYXNlIF9TSElOOiByZXR1cm4gU0hJTjsKLQljYXNlIF9TQUQ6IHJldHVybiBTQUQ7Ci0JY2FzZSBfWkFEOiByZXR1cm4gWkFEOwotCWNhc2UgX0FZTjogcmV0dXJuIEFZTjsKLQljYXNlIF9BWU5fOiByZXR1cm4gQVlOXzsKLQljYXNlIF9HSEFZTjogcmV0dXJuIEdIQVlOOwotCWNhc2UgX0dIQVlOXzogcmV0dXJuIEdIQVlOXzsKLQljYXNlIF9GRTogcmV0dXJuIEZFOwotCWNhc2UgX0dIQUY6IHJldHVybiBHSEFGOwotCWNhc2UgX0tBRl9IOgotCWNhc2UgX0tBRjogcmV0dXJuIEtBRjsKLQljYXNlIF9HQUY6IHJldHVybiBHQUY7Ci0JY2FzZSBfTEFNOiByZXR1cm4gTEFNOwotCWNhc2UgX01JTTogcmV0dXJuIE1JTTsKLQljYXNlIF9OT09OOiByZXR1cm4gTk9PTjsKLQljYXNlIF9ZRTogcmV0dXJuIFlFXzsKLQljYXNlIFlFXzogcmV0dXJuIFlFOwotCWNhc2UgX1lFRTogcmV0dXJuIFlFRV87Ci0JY2FzZSBZRUVfOiByZXR1cm4gWUVFOwotCWNhc2UgVEVFOiByZXR1cm4gVEVFXzsKLQljYXNlIF9JRTogcmV0dXJuIElFXzsKLQljYXNlIElFXzogcmV0dXJuIElFOwotCWNhc2UgX0hFOgotCWNhc2UgX0hFXzogcmV0dXJuIEZfSEU7Ci0gICAgfQotICAgIHJldHVybiBjOwotfQotCi0vKgotICogQ29udmVydCB0aGUgRmFyc2kgMzM0MiBzdGFuZGFyZCBpbnRvIEZhcnNpIFZJTS4KLSAqLwotICAgIHN0YXRpYyB2b2lkCi1jb252X3RvX3B2aW0odm9pZCkKLXsKLSAgICBjaGFyX3UJKnB0cjsKLSAgICBpbnQJCWxudW0sIGxsZW4sIGk7Ci0KLSAgICBmb3IgKGxudW0gPSAxOyBsbnVtIDw9IGN1cmJ1Zi0+Yl9tbC5tbF9saW5lX2NvdW50OyArK2xudW0pCi0gICAgewotCXB0ciA9IG1sX2dldCgobGluZW5yX1QpbG51bSk7Ci0KLQlsbGVuID0gKGludClTVFJMRU4ocHRyKTsKLQotCWZvciAoaSA9IDA7IGkgPCBsbGVuLTE7IGkrKykKLQl7Ci0JICAgIGlmIChjYW5GX0xqb2luKHB0cltpXSkgJiYgY2FuRl9Sam9pbihwdHJbaSsxXSkpCi0JICAgIHsKLQkJcHRyW2ldID0gdG9GX2xlYWRpbmcocHRyW2ldKTsKLQkJKytpOwotCi0JCXdoaWxlIChpIDwgbGxlbiAmJiBjYW5GX1Jqb2luKHB0cltpXSkpCi0JCXsKLQkJICAgIHB0cltpXSA9IHRvRl9Sam9pbihwdHJbaV0pOwotCQkgICAgaWYgKEZfaXN0ZXJtKHB0cltpXSkgfHwgIUZfaXNhbHBoYShwdHJbaV0pKQotCQkJYnJlYWs7Ci0JCSAgICArK2k7Ci0JCX0KLQkJaWYgKCFGX2lzYWxwaGEocHRyW2ldKSB8fCAhY2FuRl9Sam9pbihwdHJbaV0pKQotCQkgICAgcHRyW2ktMV0gPSB0b0ZfZW5kaW5nKHB0cltpLTFdKTsKLQkgICAgfQotCSAgICBlbHNlCi0JCXB0cltpXSA9IHRvRl9UeUEocHRyW2ldKTsKLQl9Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBGb2xsb3dpbmcgbGluZXMgY29udGFpbnMgRmFyc2kgZW5jb2RlZCBjaGFyYWN0ZXIuCi0gICAgICovCi0KLSAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopIiVzL1wyMDJcMjMxL1wyMzIvZ2UiKTsKLSAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopIiVzL1wyMDFcMjMxL1wzNzBcMzM0L2dlIik7Ci0KLSAgICAvKiBBc3N1bWUgdGhlIHNjcmVlbiBoYXMgYmVlbiBtZXNzZWQgdXA6IGNsZWFyIGl0IGFuZCByZWRyYXcuICovCi0gICAgcmVkcmF3X2xhdGVyKENMRUFSKTsKLSAgICBtc2dfYXR0cihmYXJzaV90ZXh0XzEsIEhMX0FUVFIoSExGX1MpKTsKLX0KLQotLyoKLSAqIENvbnZlcnQgdGhlIEZhcnNpIFZJTSBpbnRvIEZhcnNpIDMzNDIgc3RhbmRhcmQuCi0gKi8KLSAgICBzdGF0aWMgdm9pZAotY29udl90b19wc3RkKHZvaWQpCi17Ci0gICAgY2hhcl91CSpwdHI7Ci0gICAgaW50CQlsbnVtLCBsbGVuLCBpOwotCi0gICAgLyoKLSAgICAgKiBGb2xsb3dpbmcgbGluZSBjb250YWlucyBGYXJzaSBlbmNvZGVkIGNoYXJhY3Rlci4KLSAgICAgKi8KLSAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopIiVzL1wyMzIvXDIwMlwyMzEvZ2UiKTsKLQotICAgIGZvciAobG51bSA9IDE7IGxudW0gPD0gY3VyYnVmLT5iX21sLm1sX2xpbmVfY291bnQ7ICsrbG51bSkKLSAgICB7Ci0JcHRyID0gbWxfZ2V0KChsaW5lbnJfVClsbnVtKTsKLQlsbGVuID0gKGludClTVFJMRU4ocHRyKTsKLQotCWZvciAoaSA9IDA7IGkgPCBsbGVuOyBpKyspCi0JICAgIHB0cltpXSA9IHRvRl9UeUEocHRyW2ldKTsKLSAgICB9Ci0KLSAgICAvKiBBc3N1bWUgdGhlIHNjcmVlbiBoYXMgYmVlbiBtZXNzZWQgdXA6IGNsZWFyIGl0IGFuZCByZWRyYXcuICovCi0gICAgcmVkcmF3X2xhdGVyKENMRUFSKTsKLSAgICBtc2dfYXR0cihmYXJzaV90ZXh0XzIsIEhMX0FUVFIoSExGX1MpKTsKLX0KLQotLyoKLSAqIGxlZnQtcmlnaHQgc3dhcCB0aGUgY2hhcmFjdGVycyBpbiBidWZbbGVuXS4KLSAqLwotICAgIHN0YXRpYyB2b2lkCi1scnN3YXBidWYoY2hhcl91ICpidWYsIGludCBsZW4pCi17Ci0gICAgY2hhcl91CSpzLCAqZTsKLSAgICBpbnQJCWM7Ci0KLSAgICBzID0gYnVmOwotICAgIGUgPSBidWYgKyBsZW4gLSAxOwotCi0gICAgd2hpbGUgKGUgPiBzKQotICAgIHsKLQljID0gKnM7Ci0JKnMgPSAqZTsKLQkqZSA9IGM7Ci0JKytzOwotCS0tZTsKLSAgICB9Ci19Ci0KLS8qCi0gKiBzd2FwIGFsbCB0aGUgY2hhcmFjdGVycyBpbiByZXZlcnNlIGRpcmVjdGlvbgotICovCi0gICAgY2hhcl91ICoKLWxyc3dhcChjaGFyX3UgKmlidWYpCi17Ci0gICAgaWYgKGlidWYgIT0gTlVMTCAmJiAqaWJ1ZiAhPSBOVUwpCi0JbHJzd2FwYnVmKGlidWYsIChpbnQpU1RSTEVOKGlidWYpKTsKLSAgICByZXR1cm4gaWJ1ZjsKLX0KLQotLyoKLSAqIHN3YXAgYWxsIHRoZSBGYXJzaSBjaGFyYWN0ZXJzIGluIHJldmVyc2UgZGlyZWN0aW9uCi0gKi8KLSAgICBjaGFyX3UgKgotbHJGc3dhcChjaGFyX3UgKmNtZGJ1ZiwgaW50IGxlbikKLXsKLSAgICBpbnQJCWksIGNudDsKLQotICAgIGlmIChjbWRidWYgPT0gTlVMTCkKLQlyZXR1cm4gY21kYnVmOwotCi0gICAgaWYgKGxlbiA9PSAwICYmIChsZW4gPSAoaW50KVNUUkxFTihjbWRidWYpKSA9PSAwKQotCXJldHVybiBjbWRidWY7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgewotCWZvciAoY250ID0gMDsgaSArIGNudCA8IGxlbgotCQkJJiYgKEZfaXNhbHBoYShjbWRidWZbaSArIGNudF0pCi0JCQkgICAgfHwgRl9pc2RpZ2l0KGNtZGJ1ZltpICsgY250XSkKLQkJCSAgICB8fCBjbWRidWZbaSArIGNudF0gPT0gJyAnKTsgKytjbnQpCi0JICAgIDsKLQotCWxyc3dhcGJ1ZihjbWRidWYgKyBpLCBjbnQpOwotCWkgKz0gY250OwotICAgIH0KLSAgICByZXR1cm4gY21kYnVmOwotfQotCi0vKgotICogUmV2ZXJzZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2VhcmNoIHBhdGggYW5kIHN1YnN0aXR1dGUgc2VjdGlvbgotICogYWNjb3JkaW5nbHkuCi0gKiBUT0RPOiBoYW5kbGUgZGlmZmVyZW50IHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgVXNlIHNraXBfcmVnZXhwKCkuCi0gKi8KLSAgICBjaGFyX3UgKgotbHJGX3N1YihjaGFyX3UgKmlidWYpCi17Ci0gICAgY2hhcl91CSpwLCAqZXA7Ci0gICAgaW50CQlpLCBjbnQ7Ci0KLSAgICBwID0gaWJ1ZjsKLQotICAgIC8qIEZpbmQgdGhlIGJvdW5kYXJ5IG9mIHRoZSBzZWFyY2ggcGF0aCAqLwotICAgIHdoaWxlICgoKHAgPSB2aW1fc3RyY2hyKHAgKyAxLCAnLycpKSAhPSBOVUxMKSAmJiBwWy0xXSA9PSAnXFwnKQotCTsKLQotICAgIGlmIChwID09IE5VTEwpCi0JcmV0dXJuIGlidWY7Ci0KLSAgICAvKiBSZXZlcnNlIHRoZSBGYXJzaSBjaGFyYWN0ZXJzIGluIHRoZSBzZWFyY2ggcGF0aC4gKi8KLSAgICBsckZzd2FwKGlidWYsIChpbnQpKHAtaWJ1ZikpOwotCi0gICAgLyogTm93IGZpbmQgdGhlIGJvdW5kYXJ5IG9mIHRoZSBzdWJzdGl0dXRlIHNlY3Rpb24gKi8KLSAgICBpZiAoKGVwID0gKGNoYXJfdSAqKXN0cnJjaHIoKGNoYXIgKikrK3AsICcvJykpICE9IE5VTEwpCi0JY250ID0gKGludCkoZXAgLSBwKTsKLSAgICBlbHNlCi0JY250ID0gKGludClTVFJMRU4ocCk7Ci0KLSAgICAvKiBSZXZlcnNlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdWJzdGl0dXRlIHNlY3Rpb24gYW5kIHRha2UgY2FyZSBvZiAnXCcgKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgY250LTE7IGkrKykKLQlpZiAocFtpXSA9PSAnXFwnKQotCXsKLQkgICAgcFtpXSA9IHBbaSsxXSA7Ci0JICAgIHBbKytpXSA9ICdcXCc7Ci0JfQotCi0gICAgbHJzd2FwYnVmKHAsIGNudCk7Ci0KLSAgICByZXR1cm4gaWJ1ZjsKLX0KLQotLyoKLSAqIE1hcCBGYXJzaSBrZXlib2FyZCB3aGVuIGluIGNtZF9ma21hcCBtb2RlLgotICovCi0gICAgaW50Ci1jbWRsX2ZrbWFwKGludCBjKQotewotICAgIGludAkgICAgdGVtcGM7Ci0KLSAgICBzd2l0Y2ggKGMpCi0gICAgewotCWNhc2UgJzAnOgotCWNhc2UgJzEnOgotCWNhc2UgJzInOgotCWNhc2UgJzMnOgotCWNhc2UgJzQnOgotCWNhc2UgJzUnOgotCWNhc2UgJzYnOgotCWNhc2UgJzcnOgotCWNhc2UgJzgnOgotCWNhc2UgJzknOgotCWNhc2UgJ2AnOgotCWNhc2UgJyAnOgotCWNhc2UgJy4nOgotCWNhc2UgJyEnOgotCWNhc2UgJyInOgotCWNhc2UgJyQnOgotCWNhc2UgJyUnOgotCWNhc2UgJ14nOgotCWNhc2UgJyYnOgotCWNhc2UgJy8nOgotCWNhc2UgJygnOgotCWNhc2UgJyknOgotCWNhc2UgJz0nOgotCWNhc2UgJ1xcJzoKLQljYXNlICc/JzoKLQljYXNlICcrJzoKLQljYXNlICctJzoKLQljYXNlICdfJzoKLQljYXNlICcqJzoKLQljYXNlICc6JzoKLQljYXNlICcjJzoKLQljYXNlICd+JzoKLQljYXNlICdAJzoKLQljYXNlICc8JzoKLQljYXNlICc+JzoKLQljYXNlICd7JzoKLQljYXNlICd9JzoKLQljYXNlICd8JzoKLQljYXNlICdCJzoKLQljYXNlICdFJzoKLQljYXNlICdGJzoKLQljYXNlICdIJzoKLQljYXNlICdJJzoKLQljYXNlICdLJzoKLQljYXNlICdMJzoKLQljYXNlICdNJzoKLQljYXNlICdPJzoKLQljYXNlICdQJzoKLQljYXNlICdRJzoKLQljYXNlICdSJzoKLQljYXNlICdUJzoKLQljYXNlICdVJzoKLQljYXNlICdXJzoKLQljYXNlICdZJzoKLQljYXNlICBOTDoKLQljYXNlICBUQUI6Ci0KLQkgICAgc3dpdGNoICgodGVtcGMgPSBjbWRfZ2NoYXIoQVRfQ1VSU09SKSkpCi0JICAgIHsKLQkJY2FzZSBfQkU6Ci0JCWNhc2UgX1BFOgotCQljYXNlIF9URToKLQkJY2FzZSBfU0U6Ci0JCWNhc2UgX0pJTToKLQkJY2FzZSBfQ0hFOgotCQljYXNlIF9IRV9KOgotCQljYXNlIF9YRToKLQkJY2FzZSBfU0lOOgotCQljYXNlIF9TSElOOgotCQljYXNlIF9TQUQ6Ci0JCWNhc2UgX1pBRDoKLQkJY2FzZSBfQVlOOgotCQljYXNlIF9HSEFZTjoKLQkJY2FzZSBfRkU6Ci0JCWNhc2UgX0dIQUY6Ci0JCWNhc2UgX0tBRjoKLQkJY2FzZSBfR0FGOgotCQljYXNlIF9MQU06Ci0JCWNhc2UgX01JTToKLQkJY2FzZSBfTk9PTjoKLQkJY2FzZSBfSEU6Ci0JCWNhc2UgX0hFXzoKLQkJICAgIGNtZF9wY2hhcih0b0ZfVHlBKHRlbXBjKSwgQVRfQ1VSU09SKTsKLQkJICAgIGJyZWFrOwotCQljYXNlIF9BWU5fOgotCQkgICAgY21kX3BjaGFyKEFZTl8sIEFUX0NVUlNPUik7Ci0JCSAgICBicmVhazsKLQkJY2FzZSBfR0hBWU5fOgotCQkgICAgY21kX3BjaGFyKEdIQVlOXywgQVRfQ1VSU09SKTsKLQkJICAgIGJyZWFrOwotCQljYXNlIF9JRToKLQkJICAgIGlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19DTUQsIEFUX0NVUlNPUisxKSkKLQkJCWNtZF9wY2hhcihJRV8sIEFUX0NVUlNPUik7Ci0JCSAgICBlbHNlCi0JCQljbWRfcGNoYXIoSUUsIEFUX0NVUlNPUik7Ci0JCSAgICBicmVhazsKLQkJY2FzZSBfWUVFOgotCQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0NNRCwgQVRfQ1VSU09SKzEpKQotCQkJY21kX3BjaGFyKFlFRV8sIEFUX0NVUlNPUik7Ci0JCSAgICBlbHNlCi0JCQljbWRfcGNoYXIoWUVFLCBBVF9DVVJTT1IpOwotCQkgICAgYnJlYWs7Ci0JCWNhc2UgX1lFOgotCQkgICAgaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0NNRCwgQVRfQ1VSU09SKzEpKQotCQkJY21kX3BjaGFyKFlFXywgQVRfQ1VSU09SKTsKLQkJICAgIGVsc2UKLQkJCWNtZF9wY2hhcihZRSwgQVRfQ1VSU09SKTsKLQkgICAgfQotCi0JICAgIHN3aXRjaCAoYykKLQkgICAgewotCQljYXNlICcwJzogICByZXR1cm4gRkFSU0lfMDsKLQkJY2FzZSAnMSc6ICAgcmV0dXJuIEZBUlNJXzE7Ci0JCWNhc2UgJzInOiAgIHJldHVybiBGQVJTSV8yOwotCQljYXNlICczJzogICByZXR1cm4gRkFSU0lfMzsKLQkJY2FzZSAnNCc6ICAgcmV0dXJuIEZBUlNJXzQ7Ci0JCWNhc2UgJzUnOiAgIHJldHVybiBGQVJTSV81OwotCQljYXNlICc2JzogICByZXR1cm4gRkFSU0lfNjsKLQkJY2FzZSAnNyc6ICAgcmV0dXJuIEZBUlNJXzc7Ci0JCWNhc2UgJzgnOiAgIHJldHVybiBGQVJTSV84OwotCQljYXNlICc5JzogICByZXR1cm4gRkFSU0lfOTsKLQkJY2FzZSAnQic6ICAgcmV0dXJuIEZfUFNQOwotCQljYXNlICdFJzogICByZXR1cm4gSkFaUl9OOwotCQljYXNlICdGJzogICByZXR1cm4gQUxFRl9EX0g7Ci0JCWNhc2UgJ0gnOiAgIHJldHVybiBBTEVGX0E7Ci0JCWNhc2UgJ0knOiAgIHJldHVybiBUQVNIOwotCQljYXNlICdLJzogICByZXR1cm4gRl9MUVVPVDsKLQkJY2FzZSAnTCc6ICAgcmV0dXJuIEZfUlFVT1Q7Ci0JCWNhc2UgJ00nOiAgIHJldHVybiBIQU1aRTsKLQkJY2FzZSAnTyc6ICAgcmV0dXJuICdbJzsKLQkJY2FzZSAnUCc6ICAgcmV0dXJuICddJzsKLQkJY2FzZSAnUSc6ICAgcmV0dXJuIE9POwotCQljYXNlICdSJzogICByZXR1cm4gTUFEX047Ci0JCWNhc2UgJ1QnOiAgIHJldHVybiBPVzsKLQkJY2FzZSAnVSc6ICAgcmV0dXJuIE1BRDsKLQkJY2FzZSAnVyc6ICAgcmV0dXJuIE9XX09XOwotCQljYXNlICdZJzogICByZXR1cm4gSkFaUjsKLQkJY2FzZSAnYCc6ICAgcmV0dXJuIEZfUENOOwotCQljYXNlICchJzogICByZXR1cm4gRl9FWENMOwotCQljYXNlICdAJzogICByZXR1cm4gRl9DT01NQTsKLQkJY2FzZSAnIyc6ICAgcmV0dXJuIEZfRElWSURFOwotCQljYXNlICckJzogICByZXR1cm4gRl9DVVJSRU5DWTsKLQkJY2FzZSAnJSc6ICAgcmV0dXJuIEZfUEVSQ0VOVDsKLQkJY2FzZSAnXic6ICAgcmV0dXJuIEZfTVVMOwotCQljYXNlICcmJzogICByZXR1cm4gRl9CQ09NTUE7Ci0JCWNhc2UgJyonOiAgIHJldHVybiBGX1NUQVI7Ci0JCWNhc2UgJygnOiAgIHJldHVybiBGX0xQQVJFTlQ7Ci0JCWNhc2UgJyknOiAgIHJldHVybiBGX1JQQVJFTlQ7Ci0JCWNhc2UgJy0nOiAgIHJldHVybiBGX01JTlVTOwotCQljYXNlICdfJzogICByZXR1cm4gRl9VTkRFUkxJTkU7Ci0JCWNhc2UgJz0nOiAgIHJldHVybiBGX0VRVUFMUzsKLQkJY2FzZSAnKyc6ICAgcmV0dXJuIEZfUExVUzsKLQkJY2FzZSAnXFwnOiAgcmV0dXJuIEZfQlNMQVNIOwotCQljYXNlICd8JzogICByZXR1cm4gRl9QSVBFOwotCQljYXNlICc6JzogICByZXR1cm4gRl9EQ09MT047Ci0JCWNhc2UgJyInOiAgIHJldHVybiBGX1NFTUlDT0xPTjsKLQkJY2FzZSAnLic6ICAgcmV0dXJuIEZfUEVSSU9EOwotCQljYXNlICcvJzogICByZXR1cm4gRl9TTEFTSDsKLQkJY2FzZSAnPCc6ICAgcmV0dXJuIEZfTEVTUzsKLQkJY2FzZSAnPic6ICAgcmV0dXJuIEZfR1JFQVRFUjsKLQkJY2FzZSAnPyc6ICAgcmV0dXJuIEZfUVVFU1RJT047Ci0JCWNhc2UgJyAnOiAgIHJldHVybiBGX0JMQU5LOwotCSAgICB9Ci0KLQkgICAgYnJlYWs7Ci0KLQljYXNlICdhJzogICByZXR1cm4gX1NISU47Ci0JY2FzZSAnQSc6ICAgcmV0dXJuIFdBV19IOwotCWNhc2UgJ2InOiAgIHJldHVybiBaQUw7Ci0JY2FzZSAnYyc6ICAgcmV0dXJuIFpFOwotCWNhc2UgJ0MnOiAgIHJldHVybiBKRTsKLQljYXNlICdkJzogICByZXR1cm4gX1lFOwotCWNhc2UgJ0QnOiAgIHJldHVybiBfWUVFOwotCWNhc2UgJ2UnOiAgIHJldHVybiBfU0U7Ci0JY2FzZSAnZic6ICAgcmV0dXJuIF9CRTsKLQljYXNlICdnJzogICByZXR1cm4gX0xBTTsKLQljYXNlICdHJzoKLQkJaWYgKGNtZF9nY2hhcihBVF9DVVJTT1IpID09IF9MQU0pCi0JCXsKLQkJICAgIGNtZF9wY2hhcihMQU0sIEFUX0NVUlNPUik7Ci0JCQkgICAgcmV0dXJuIEFMRUZfVV9IOwotCQl9Ci0KLQkJaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0NNRCwgQVRfQ1VSU09SKSkKLQkJCXJldHVybiBBTEVGX1VfSF87Ci0JCWVsc2UKLQkJCXJldHVybiBBTEVGX1VfSDsKLQljYXNlICdoJzoKLQkJaWYgKGNtZF9nY2hhcihBVF9DVVJTT1IpID09IF9MQU0pCi0JCXsKLQkJICAgIGNtZF9wY2hhcihMQSwgQVRfQ1VSU09SKTsKLQkJICAgIHJlZHJhd2NtZGxpbmUoKTsKLQkJICAgIHJldHVybiBLX0lHTk9SRTsKLQkJfQotCi0JCWlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19DTUQsIEFUX0NVUlNPUikpCi0JCQlyZXR1cm4gQUxFRl87Ci0JCWVsc2UKLQkJCXJldHVybiBBTEVGOwotCWNhc2UgJ2knOgotCQlpZiAoRl9pc19UeUJfVHlDX1R5RChTUkNfQ01ELCBBVF9DVVJTT1IpKQotCQkJcmV0dXJuIF9IRV87Ci0JCWVsc2UKLQkJCXJldHVybiBfSEU7Ci0JY2FzZSAnaic6ICAgcmV0dXJuIF9URTsKLQljYXNlICdKJzoKLQkJaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0NNRCwgQVRfQ1VSU09SKSkKLQkJCXJldHVybiBURUVfOwotCQllbHNlCi0JCQlyZXR1cm4gVEVFOwotCWNhc2UgJ2snOiAgIHJldHVybiBfTk9PTjsKLQljYXNlICdsJzogICByZXR1cm4gX01JTTsKLQljYXNlICdtJzogICByZXR1cm4gX1BFOwotCWNhc2UgJ24nOgotCWNhc2UgJ04nOiAgIHJldHVybiBEQUw7Ci0JY2FzZSAnbyc6ICAgcmV0dXJuIF9YRTsKLQljYXNlICdwJzogICByZXR1cm4gX0hFX0o7Ci0JY2FzZSAncSc6ICAgcmV0dXJuIF9aQUQ7Ci0JY2FzZSAncic6ICAgcmV0dXJuIF9HSEFGOwotCWNhc2UgJ3MnOiAgIHJldHVybiBfU0lOOwotCWNhc2UgJ1MnOiAgIHJldHVybiBfSUU7Ci0JY2FzZSAndCc6ICAgcmV0dXJuIF9GRTsKLQljYXNlICd1JzoKLQkJaWYgKEZfaXNfVHlCX1R5Q19UeUQoU1JDX0NNRCwgQVRfQ1VSU09SKSkKLQkJCXJldHVybiBfQVlOXzsKLQkJZWxzZQotCQkJcmV0dXJuIF9BWU47Ci0JY2FzZSAndic6Ci0JY2FzZSAnVic6ICAgcmV0dXJuIFJFOwotCWNhc2UgJ3cnOiAgIHJldHVybiBfU0FEOwotCWNhc2UgJ3gnOgotCWNhc2UgJ1gnOiAgIHJldHVybiBfVEE7Ci0JY2FzZSAneSc6Ci0JCWlmIChGX2lzX1R5Ql9UeUNfVHlEKFNSQ19DTUQsIEFUX0NVUlNPUikpCi0JCQlyZXR1cm4gX0dIQVlOXzsKLQkJZWxzZQotCQkJcmV0dXJuIF9HSEFZTjsKLQljYXNlICd6JzoKLQljYXNlICdaJzogICByZXR1cm4gX1pBOwotCWNhc2UgJzsnOiAgIHJldHVybiBfS0FGOwotCWNhc2UgJ1wnJzogIHJldHVybiBfR0FGOwotCWNhc2UgJywnOiAgIHJldHVybiBXQVc7Ci0JY2FzZSAnWyc6ICAgcmV0dXJuIF9KSU07Ci0JY2FzZSAnXSc6ICAgcmV0dXJuIF9DSEU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGM7Ci19Ci0KLS8qCi0gKiBGX2lzYWxwaGEgcmV0dXJucyBUUlVFIGlmICdjJyBpcyBhIEZhcnNpIGFscGhhYmV0Ci0gKi8KLSAgICBpbnQKLUZfaXNhbHBoYShpbnQgYykKLXsKLSAgICByZXR1cm4gKChjID49IFRFRV8gJiYgYyA8PSBfWUUpCi0JICAgIHx8IChjID49IEFMRUZfQSAmJiBjIDw9IFlFKQotCSAgICB8fCAoYyA+PSBfSUUgJiYgYyA8PSBZRV8pKTsKLX0KLQotLyoKLSAqIEZfaXNkaWdpdCByZXR1cm5zIFRSVUUgaWYgJ2MnIGlzIGEgRmFyc2kgZGlnaXQKLSAqLwotICAgIGludAotRl9pc2RpZ2l0KGludCBjKQotewotICAgIHJldHVybiAoYyA+PSBGQVJTSV8wICYmIGMgPD0gRkFSU0lfOSk7Ci19Ci0KLS8qCi0gKiBGX2lzY2hhciByZXR1cm5zIFRSVUUgaWYgJ2MnIGlzIGEgRmFyc2kgY2hhcmFjdGVyLgotICovCi0gICAgaW50Ci1GX2lzY2hhcihpbnQgYykKLXsKLSAgICByZXR1cm4gKGMgPj0gVEVFXyAmJiBjIDw9IFlFXyk7Ci19Ci0KLSAgICB2b2lkCi1mYXJzaV9mOChjbWRhcmdfVCAqY2FwIFVOVVNFRCkKLXsKLSAgICBpZiAocF9hbHRrZXltYXApCi0gICAgewotCWlmIChjdXJ3aW4tPndfZmFyc2kgJiBXX1JfTCkKLQl7Ci0JICAgIHBfZmttYXAgPSAwOwotCSAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopInNldCBub3JsIik7Ci0JICAgIG1zZygiIik7Ci0JfQotCWVsc2UKLQl7Ci0JICAgIHBfZmttYXAgPSAxOwotCSAgICBkb19jbWRsaW5lX2NtZCgoY2hhcl91ICopInNldCBybCIpOwotCSAgICBtc2coIiIpOwotCX0KLQotCWN1cndpbi0+d19mYXJzaSA9IGN1cndpbi0+d19mYXJzaSBeIFdfUl9MOwotICAgIH0KLX0KLQotICAgIHZvaWQKLWZhcnNpX2Y5KGNtZGFyZ19UICpjYXAgVU5VU0VEKQotewotICAgIGlmIChwX2FsdGtleW1hcCAmJiBjdXJ3aW4tPndfcF9ybCkKLSAgICB7Ci0JY3Vyd2luLT53X2ZhcnNpID0gY3Vyd2luLT53X2ZhcnNpIF4gV19DT05WOwotCWlmIChjdXJ3aW4tPndfZmFyc2kgJiBXX0NPTlYpCi0JICAgIGNvbnZfdG9fcHZpbSgpOwotCWVsc2UKLQkgICAgY29udl90b19wc3RkKCk7Ci0gICAgfQotfQotCi0jZW5kaWYgLyogRkVBVF9GS01BUCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2ZhcnNpLmggYi9zcmMvZmFyc2kuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkxYmRmNy4uMDAwMDAwMAotLS0gYS9zcmMvZmFyc2kuaAorKysgL2Rldi9udWxsCkBAIC0xLDIzNCArMCwwIEBACi0vKiB2aTpzZXQgdHM9OCBzdHM9NCBzdz00IG5vZXQ6Ci0gKgotICogVklNIC0gVmkgSU1wcm92ZWQJYnkgQnJhbSBNb29sZW5hYXIKLSAqCi0gKiBEbyAiOmhlbHAgdWdhbmRhIiAgaW4gVmltIHRvIHJlYWQgY29weWluZyBhbmQgdXNhZ2UgY29uZGl0aW9ucy4KLSAqIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgotICovCi0KLS8qCi0gKiBGYXJzaSBjaGFyYWN0ZXJzIGFyZSBjYXRlZ29yaXplZCBpbnRvIGZvbGxvd2luZyB0eXBlczoKLSAqCi0gKiBUeUEJKGZvciBjYXBpdGFsIGxldHRlciByZXByZXNlbnRhdGlvbikKLSAqIFR5QgkoZm9yIHR5cGVzIHRoYXQgbG9vayBsaWtlIF9YICBlLmcuIEFZTikKLSAqIFR5QwkoZm9yIHR5cGVzIHRoYXQgbG9vayBsaWtlIFhfICBlLmcuIFlFXykKLSAqIFR5RAkoZm9yIHR5cGVzIHRoYXQgbG9vayBsaWtlIF9YXyAgZS5nLiBfQVlOXykKLSAqIFR5RQkoZm9yIHR5cGVzIHRoYXQgbG9vayBsaWtlIFggIGUuZy4gUkUpCi0gKi8KLQotLyoKLSAqIEZhcnNpIGNoYXJhY3RlciBzZXQgZGVmaW5pdGlvbgotICovCi0KLS8qCi0gKiBCZWdpbiBvZiB0aGUgbm9uLXN0YW5kYXJkIHBhcnQKLSAqLwotCi0jZGVmaW5lIFRFRV8JCTB4ODAKLSNkZWZpbmUgQUxFRl9VX0hfCTB4ODEKLSNkZWZpbmUgQUxFRl8JCTB4ODIKLSNkZWZpbmUgX0JFCQkweDgzCi0jZGVmaW5lIF9QRQkJMHg4NAotI2RlZmluZSBfVEUJCTB4ODUKLSNkZWZpbmUgX1NFCQkweDg2Ci0jZGVmaW5lIF9KSU0JCTB4ODcKLSNkZWZpbmUgX0NIRQkJMHg4OAotI2RlZmluZSBfSEVfSgkJMHg4OQotI2RlZmluZSBfWEUJCTB4OGEKLSNkZWZpbmUgX1NJTgkJMHg4YgotI2RlZmluZSBfU0hJTgkJMHg4YwotI2RlZmluZSBfU0FECQkweDhkCi0jZGVmaW5lIF9aQUQJCTB4OGUKLSNkZWZpbmUgX0FZTgkJMHg4ZgotI2RlZmluZSBfQVlOXwkJMHg5MAotI2RlZmluZSBBWU5fCQkweDkxCi0jZGVmaW5lIF9HSEFZTgkJMHg5MgotI2RlZmluZSBfR0hBWU5fCQkweDkzCi0jZGVmaW5lIEdIQVlOXwkJMHg5NAotI2RlZmluZSBfRkUJCTB4OTUKLSNkZWZpbmUgX0dIQUYJCTB4OTYKLSNkZWZpbmUgX0tBRgkJMHg5NwotI2RlZmluZSBfR0FGCQkweDk4Ci0jZGVmaW5lIF9MQU0JCTB4OTkKLSNkZWZpbmUgTEEJCTB4OWEKLSNkZWZpbmUgX01JTQkJMHg5YgotI2RlZmluZSBfTk9PTgkJMHg5YwotI2RlZmluZSBfSEUJCTB4OWQKLSNkZWZpbmUgX0hFXwkJMHg5ZQotI2RlZmluZSBfWUUJCTB4OWYKLSNkZWZpbmUgX0lFCQkweGVjCi0jZGVmaW5lIElFXwkJMHhlZAotI2RlZmluZSBJRQkJMHhmYgotI2RlZmluZSBfWUVFCQkweGVlCi0jZGVmaW5lIFlFRV8JCTB4ZWYKLSNkZWZpbmUgWUVfCQkweGZmCi0KLS8qCi0gKiBFbmQgb2YgdGhlIG5vbi1zdGFuZGFyZCBwYXJ0Ci0gKi8KLQotLyoKLSAqIFN0YW5kYXJkIHBhcnQKLSAqLwotCi0jZGVmaW5lIEZfQkxBTksJCTB4YTAJLyogRmFyc2kgJyAnIChTUCkgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfUFNQCQkweGExCS8qIFBTUCBmb3IgY2FwaXRhbGl6aW5nIG9mIGEgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfUENOCQkweGEyCS8qIFBDTiBmb3IgcmVkZWZpbmluZyBvZiB0aGUgaGFteWUgbWVhbmluZyAqLwotI2RlZmluZSBGX0VYQ0wJCTB4YTMJLyogRmFyc2kgISBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9DVVJSRU5DWQkweGE0CS8qIEZhcnNpIFJpYWwgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfUEVSQ0VOVAkweGE1CS8qIEZhcnNpICUgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfUEVSSU9ECTB4YTYJLyogRmFyc2kgJy4nIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX0NPTU1BCQkweGE3CS8qIEZhcnNpICcsJyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9MUEFSRU5UCTB4YTgJLyogRmFyc2kgJygnIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX1JQQVJFTlQJMHhhOQkvKiBGYXJzaSAnKScgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfTVVMCQkweGFhCS8qIEZhcnNpICd4JyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9QTFVTCQkweGFiCS8qIEZhcnNpICcrJyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9CQ09NTUEJMHhhYwkvKiBGYXJzaSBjb21tYSBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9NSU5VUwkJMHhhZAkvKiBGYXJzaSAnLScgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfRElWSURFCTB4YWUJLyogRmFyc2kgZGl2aWRlICgvKSBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9TTEFTSAkJMHhhZgkvKiBGYXJzaSAnLycgY2hhcmFjdGVyICovCi0KLSNkZWZpbmUgRkFSU0lfMAkJMHhiMAotI2RlZmluZSBGQVJTSV8xCQkweGIxCi0jZGVmaW5lIEZBUlNJXzIJCTB4YjIKLSNkZWZpbmUgRkFSU0lfMwkJMHhiMwotI2RlZmluZSBGQVJTSV80CQkweGI0Ci0jZGVmaW5lIEZBUlNJXzUJCTB4YjUKLSNkZWZpbmUgRkFSU0lfNgkJMHhiNgotI2RlZmluZSBGQVJTSV83CQkweGI3Ci0jZGVmaW5lIEZBUlNJXzgJCTB4YjgKLSNkZWZpbmUgRkFSU0lfOQkJMHhiOQotCi0jZGVmaW5lIEZfRENPTE9OCTB4YmEJLyogRmFyc2kgJzonIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX1NFTUlDT0xPTgkweGJiCS8qIEZhcnNpICc7JyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9HUkVBVEVSCTB4YmMJLyogRmFyc2kgJz4nIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX0VRVUFMUwkweGJkCS8qIEZhcnNpICc9JyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9MRVNTCQkweGJlCS8qIEZhcnNpICc8JyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9RVUVTVElPTgkweGJmCS8qIEZhcnNpID8gY2hhcmFjdGVyICovCi0KLSNkZWZpbmUgQUxFRl9BCTB4YzAKLSNkZWZpbmUgQUxFRgkweGMxCi0jZGVmaW5lIEhBTVpFCTB4YzIKLSNkZWZpbmUgQkUJMHhjMwotI2RlZmluZSBQRQkweGM0Ci0jZGVmaW5lIFRFCTB4YzUKLSNkZWZpbmUgU0UJMHhjNgotI2RlZmluZSBKSU0JMHhjNwotI2RlZmluZSBDSEUJMHhjOAotI2RlZmluZSBIRV9KCTB4YzkKLSNkZWZpbmUgWEUJMHhjYQotI2RlZmluZSBEQUwJMHhjYgotI2RlZmluZSBaQUwJMHhjYwotI2RlZmluZSBSRQkweGNkCi0jZGVmaW5lIFpFCTB4Y2UKLSNkZWZpbmUgSkUJMHhjZgotI2RlZmluZSBTSU4JMHhkMAotI2RlZmluZSBTSElOCTB4ZDEKLSNkZWZpbmUgU0FECTB4ZDIKLSNkZWZpbmUgWkFECTB4ZDMKLSNkZWZpbmUgX1RBCTB4ZDQKLSNkZWZpbmUgX1pBCTB4ZDUKLSNkZWZpbmUgQVlOCTB4ZDYKLSNkZWZpbmUgR0hBWU4JMHhkNwotI2RlZmluZSBGRQkweGQ4Ci0jZGVmaW5lIEdIQUYJMHhkOQotI2RlZmluZSBLQUYJMHhkYQotI2RlZmluZSBHQUYJMHhkYgotI2RlZmluZSBMQU0JMHhkYwotI2RlZmluZSBNSU0JMHhkZAotI2RlZmluZSBOT09OCTB4ZGUKLSNkZWZpbmUgV0FXCTB4ZGYKLSNkZWZpbmUgRl9IRQkweGUwCQkvKiBGXyBhZGRlZCBmb3IgbmFtZSBjbGFzaCB3aXRoIFBlcmwgKi8KLSNkZWZpbmUgWUUJMHhlMQotI2RlZmluZSBURUUJMHhmYwotI2RlZmluZSBfS0FGX0gJMHhmZAotI2RlZmluZSBZRUUJMHhmZQotCi0jZGVmaW5lIEZfTEJSQUNLCTB4ZTIJLyogRmFyc2kgJ1snIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX1JCUkFDSwkweGUzCS8qIEZhcnNpICddJyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9MQlJBQ0UJMHhlNAkvKiBGYXJzaSAneycgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfUkJSQUNFCTB4ZTUJLyogRmFyc2kgJ30nIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX0xRVU9UCQkweGU2CS8qIEZhcnNpIGxlZnQgcXVvdGF0aW9uIGNoYXJhY3RlciAqLwotI2RlZmluZSBGX1JRVU9UCQkweGU3CS8qIEZhcnNpIHJpZ2h0IHF1b3RhdGlvbiBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9TVEFSCQkweGU4CS8qIEZhcnNpICcqJyBjaGFyYWN0ZXIgKi8KLSNkZWZpbmUgRl9VTkRFUkxJTkUJMHhlOQkvKiBGYXJzaSAnXycgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfUElQRQkJMHhlYQkvKiBGYXJzaSAnfCcgY2hhcmFjdGVyICovCi0jZGVmaW5lIEZfQlNMQVNICTB4ZWIJLyogRmFyc2kgJ1wnIGNoYXJhY3RlciAqLwotCi0jZGVmaW5lIE1BRAkJMHhmMAotI2RlZmluZSBKQVpSCQkweGYxCi0jZGVmaW5lIE9XCQkweGYyCi0jZGVmaW5lIE1BRF9OCQkweGYzCi0jZGVmaW5lIEpBWlJfTgkJMHhmNAotI2RlZmluZSBPV19PVwkJMHhmNQotI2RlZmluZSBUQVNICQkweGY2Ci0jZGVmaW5lIE9PCQkweGY3Ci0jZGVmaW5lIEFMRUZfVV9ICTB4ZjgKLSNkZWZpbmUgV0FXX0gJCTB4ZjkKLSNkZWZpbmUgQUxFRl9EX0gJMHhmYQotCi0vKgotICogZ2xvYmFsIGRlZmluaXRpb25zCi0gKiA9PT09PT09PT09PT09PT09PT0KLSAqLwotCi0jZGVmaW5lIFNSQ19FRFQJMAotI2RlZmluZSBTUkNfQ01EIDEKLQotI2RlZmluZSBBVF9DVVJTT1IgMAotCi0vKgotICogZGVmaW5pdGlvbnMgZm9yIHRoZSB3aW5kb3cgZGVwZW5kZW50IGZ1bmN0aW9ucyAod19mYXJzaSkuCi0gKi8KLSNkZWZpbmUgV19DT05WIDB4MQotI2RlZmluZSBXX1JfTCAgMHgyCi0KLQotLyogc3BlY2lhbCBGYXJzaSB0ZXh0IG1lc3NhZ2VzICovCi0KLUVYVEVSTiBjaGFyIGZhcnNpX3RleHRfMVtdCi0jaWZkZWYgRE9fSU5JVAotCQk9IHsgWUVfLCBfU0lOLCBSRSwgQUxFRl8sIF9GRSwgJyAnLCAnVicsICdJJywgJ00nLAotCQkgICAgJyAnLCBGX0hFLCBfQkUsICcgJywgU0hJTiwgUkUsIF9HQUYsIERBTCwnICcsIE5PT04sCi0JCSAgICBBTEVGXywgX1lFLCBBTEVGXywgX1BFLCAnXDAnfQotI2VuZGlmCi0JCSAgICAgOwotCi1FWFRFUk4gY2hhciBmYXJzaV90ZXh0XzJbXQotI2lmZGVmIERPX0lOSVQKLQkJPSB7IFlFXywgX1NJTiwgUkUsIEFMRUZfLCBfRkUsICcgJywgRkFSU0lfMywgRkFSU0lfMywKLQkJICAgIEZBUlNJXzQsIEZBUlNJXzIsICcgJywgREFMLCBSRSwgQUxFRiwgREFMLCBfTk9PTiwKLQkJICAgIEFMRUZfLCBfVEUsIF9TSU4sIEFMRUYsICcgJywgRl9IRSwgX0JFLCAnICcsIFNISU4sCi0JCSAgICBSRSwgIF9HQUYsIERBTCwgJyAnLCBOT09OLCBBTEVGXywgX1lFLCBBTEVGXywgX1BFLCAnXDAnfQotI2VuZGlmCi0JCSAgICAgOwotCi1FWFRFUk4gY2hhciBmYXJzaV90ZXh0XzNbXQotI2lmZGVmIERPX0lOSVQKLQkJPSB7IERBTCwgV0FXLCBfU0hJTiwgX1lFLCBfTUlNLCBfTk9PTiwgJyAnLCBZRV8sIF9OT09OLAotCQkgICAgQUxFRl8sX0JFLCBfWUUsIF9URSwgX1NISU4sIF9QRSwgJyAnLCAnUicsJ0UnLCdQJywnTCcsCi0JCSAgICAnQScsJ0MnLCdFJywgJyAnLCBOT09OLCBBTEVGXywgX01JTSwgUkUsIF9GRSwgWkUsIEFMRUYsCi0JCSAgICAnICcsICdSJywgJ0UnLCAnVicsICdFJywgJ1InLCAnUycsICdFJywgJyAnLCAnSScsICdOJywKLQkJICAgICdTJywgJ0UnLCAnUicsICdUJywgJyAnLCBTSElOLCBXQVcsIFJFLCAnICcsIEFMRUZfLCBfQkUsCi0JCSAgICAnICcsIFlFXywgX1NJTiwgUkUsIEFMRUZfLCBfRkUsICcgJywgUkUsIERBTCwgJyAnLCBSRSwKLQkJICAgIEFMRUZfLCBfS0FGLCcgJywgTUlNLCBBTEVGXywgX0dBRiwgX05PT04sIF9IRSwgJ1wwJ30KLSNlbmRpZgotCQkgICAgOwotCi0jaWYgMCAvKiBub3QgdXNlZCAqLwotRVhURVJOIGNoYXJfdSBmYXJzaV90ZXh0XzRbXQotI2lmZGVmIERPX0lOSVQKLQkJPSB7IERBTCwgV0FXLCBfU0hJTiwgX1lFLCBfTUlNLCBfTk9PTiwgJyAnLCBZRV8sIF9OT09OLAotCQkgICAgQUxFRl8sIF9CRSwgX1lFLCBfVEUsIF9TSElOLCBfUEUsICcgJywgJzwnLCAnQycsJ1QnLCdSJywKLQkJICAgICdMJywnLScsJ0InLCc+JywgJyAnLCBOT09OLCBBTEVGXywgX01JTSwgUkUsIF9GRSwgWkUsCi0JCSAgICBBTEVGLCAnICcsIFlFXywgX1NJTiwgUkUsIEFMRUZfLCBfRkUsICcgJywgUkUsIERBTCwgJyAnLAotCQkgICAgUkUsIEFMRUZfLCBfS0FGLCcgJywgTUlNLCBBTEVGXywgX0dBRiwgX05PT04sIF9IRSwgJ1wwJ30KLSNlbmRpZgotCQkgICAgOwotI2VuZGlmCi0KLUVYVEVSTiBjaGFyIGZhcnNpX3RleHRfNVtdCi0jaWZkZWYgRE9fSU5JVAotCQk9IHsgJyAnLCBZRV8sIF9TSU4sIFJFLCBBTEVGXywgX0ZFLCAnXDAnfQotI2VuZGlmCi0JCSAgICA7CmRpZmYgLS1naXQgYS9zcmMvZ2V0Y2hhci5jIGIvc3JjL2dldGNoYXIuYwppbmRleCBmZTc0ZGJmLi5lYWVmMWFiIDEwMDY0NAotLS0gYS9zcmMvZ2V0Y2hhci5jCisrKyBiL3NyYy9nZXRjaGFyLmMKQEAgLTMzNjEsMTUgKzMzNjEsNiBAQAogCSAgICByaHMgPSByZXBsYWNlX3Rlcm1jb2RlcyhyaHMsICZhcmdfYnVmLCBGQUxTRSwgVFJVRSwgc3BlY2lhbCk7CiAgICAgfQogCi0jaWZkZWYgRkVBVF9GS01BUAotICAgIC8qCi0gICAgICogV2hlbiBpbiByaWdodC10by1sZWZ0IG1vZGUgYW5kIGFsdGVybmF0ZSBrZXltYXAgb3B0aW9uIHNldCwKLSAgICAgKiByZXZlcnNlIHRoZSBjaGFyYWN0ZXIgZmxvdyBpbiB0aGUgcmhzIGluIEZhcnNpLgotICAgICAqLwotICAgIGlmIChwX2FsdGtleW1hcCAmJiBjdXJ3aW4tPndfcF9ybCkKLQlscnN3YXAocmhzKTsKLSNlbmRpZgotCiAgICAgLyoKICAgICAgKiBjaGVjayBhcmd1bWVudHMgYW5kIHRyYW5zbGF0ZSBmdW5jdGlvbiBrZXlzCiAgICAgICovCmRpZmYgLS1naXQgYS9zcmMvZ2xvYmFscy5oIGIvc3JjL2dsb2JhbHMuaAppbmRleCA2Y2MzYmUyLi44MmU2NjNlIDEwMDY0NAotLS0gYS9zcmMvZ2xvYmFscy5oCisrKyBiL3NyYy9nbG9iYWxzLmgKQEAgLTE0NTAsOSArMTQ1MCw3IEBACiAjaWZuZGVmIEZFQVRfUklHSFRMRUZUCiBFWFRFUk4gY2hhciBlX25vaGVicmV3W10JSU5JVCg9IE5fKCJFMjY6IEhlYnJldyBjYW5ub3QgYmUgdXNlZDogTm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lXG4iKSk7CiAjZW5kaWYKLSNpZm5kZWYgRkVBVF9GS01BUAotRVhURVJOIGNoYXIgZV9ub2ZhcnNpW10JSU5JVCg9IE5fKCJFMjc6IEZhcnNpIGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWVcbiIpKTsKLSNlbmRpZgorRVhURVJOIGNoYXIgZV9ub2ZhcnNpW10JCUlOSVQoPSBOXygiRTI3OiBGYXJzaSBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWRcbiIpKTsKICNpZm5kZWYgRkVBVF9BUkFCSUMKIEVYVEVSTiBjaGFyIGVfbm9hcmFiaWNbXQlJTklUKD0gTl8oIkU4MDA6IEFyYWJpYyBjYW5ub3QgYmUgdXNlZDogTm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lXG4iKSk7CiAjZW5kaWYKQEAgLTE2NTYsMTMgKzE2NTQsNiBAQAogI2VuZGlmCiAKIC8qCi0gKiBPcHRpb25hbCBGYXJzaSBzdXBwb3J0LiAgSW5jbHVkZSBpdCBoZXJlLCBzbyBFWFRFUk4gYW5kIElOSVQgYXJlIGRlZmluZWQuCi0gKi8KLSNpZmRlZiBGRUFUX0ZLTUFQCi0jIGluY2x1ZGUgImZhcnNpLmgiCi0jZW5kaWYKLQotLyoKICAqIE9wdGlvbmFsIEFyYWJpYyBzdXBwb3J0LiBJbmNsdWRlIGl0IGhlcmUsIHNvIEVYVEVSTiBhbmQgSU5JVCBhcmUgZGVmaW5lZC4KICAqLwogI2lmZGVmIEZFQVRfQVJBQklDCmRpZmYgLS1naXQgYS9zcmMvbWFpbi5jIGIvc3JjL21haW4uYwppbmRleCBkZjIwNGJjLi42YWQ2ZmZmIDEwMDY0NAotLS0gYS9zcmMvbWFpbi5jCisrKyBiL3NyYy9tYWluLmMKQEAgLTUzNSwxNyArNTM1LDYgQEAKICAgICBpZiAocGFyYW1zLm5vX3N3YXBfZmlsZSkKIAlwX3VjID0gMDsKIAotI2lmZGVmIEZFQVRfRktNQVAKLSAgICBpZiAoY3Vyd2luLT53X3BfcmwgJiYgcF9hbHRrZXltYXApCi0gICAgewotCXBfaGttYXAgPSBGQUxTRTsJLyogUmVzZXQgdGhlIEhlYnJldyBrZXltYXAgbW9kZSAqLwotIyBpZmRlZiBGRUFUX0FSQUJJQwotCWN1cndpbi0+d19wX2FyYWIgPSBGQUxTRTsgLyogUmVzZXQgdGhlIEFyYWJpYyBrZXltYXAgbW9kZSAqLwotIyBlbmRpZgotCXBfZmttYXAgPSBUUlVFOwkJLyogU2V0IHRoZSBGYXJzaSBrZXltYXAgbW9kZSAqLwotICAgIH0KLSNlbmRpZgotCiAjaWZkZWYgRkVBVF9HVUkKICAgICBpZiAoZ3VpLnN0YXJ0aW5nKQogICAgIHsKQEAgLTIwMjUsMTQgKzIwMTQsOSBAQAogCQltYWluX3N0YXJ0X2d1aSgpOwogCQlicmVhazsKIAotCSAgICBjYXNlICdGJzoJCS8qICItRiIgc3RhcnQgaW4gRmFyc2kgbW9kZTogcmwgKyBma21hcCBzZXQgKi8KLSNpZmRlZiBGRUFUX0ZLTUFQCi0JCXBfZmttYXAgPSBUUlVFOwotCQlzZXRfb3B0aW9uX3ZhbHVlKChjaGFyX3UgKikicmwiLCAxTCwgTlVMTCwgMCk7Ci0jZWxzZQorCSAgICBjYXNlICdGJzoJCS8qICItRiIgd2FzIGZvciBGYXJzaSBtb2RlICovCiAJCW1jaF9lcnJtc2coXyhlX25vZmFyc2kpKTsKIAkJbWNoX2V4aXQoMik7Ci0jZW5kaWYKIAkJYnJlYWs7CiAKIAkgICAgY2FzZSAnPyc6CQkvKiAiLT8iIGdpdmUgaGVscCBtZXNzYWdlIChmb3IgTVMtV2luZG93cykgKi8KQEAgLTMzNTEsOSArMzMzNSw2IEBACiAjaWZkZWYgRkVBVF9SSUdIVExFRlQKICAgICBtYWluX21zZyhfKCItSFx0XHRcdFN0YXJ0IGluIEhlYnJldyBtb2RlIikpOwogI2VuZGlmCi0jaWZkZWYgRkVBVF9GS01BUAotICAgIG1haW5fbXNnKF8oIi1GXHRcdFx0U3RhcnQgaW4gRmFyc2kgbW9kZSIpKTsKLSNlbmRpZgogICAgIG1haW5fbXNnKF8oIi1UIDx0ZXJtaW5hbD5cdFNldCB0ZXJtaW5hbCB0eXBlIHRvIDx0ZXJtaW5hbD4iKSk7CiAgICAgbWFpbl9tc2coXygiLS1ub3QtYS10ZXJtXHRcdFNraXAgd2FybmluZyBmb3IgaW5wdXQvb3V0cHV0IG5vdCBiZWluZyBhIHRlcm1pbmFsIikpOwogICAgIG1haW5fbXNnKF8oIi0tdHR5ZmFpbFx0XHRFeGl0IGlmIGlucHV0IG9yIG91dHB1dCBpcyBub3QgYSB0ZXJtaW5hbCIpKTsKZGlmZiAtLWdpdCBhL3NyYy9ub3JtYWwuYyBiL3NyYy9ub3JtYWwuYwppbmRleCA0MWFmOTY2Li42MjRlMzQ3IDEwMDY0NAotLS0gYS9zcmMvbm9ybWFsLmMKKysrIGIvc3JjL25vcm1hbC5jCkBAIC0zOTcsMTAgKzM5Nyw2IEBACiAgICAge0tfVEFCTElORSwgbnZfdGFibGluZSwJMCwJCQkwfSwKICAgICB7S19UQUJNRU5VLCBudl90YWJtZW51LAkwLAkJCTB9LAogI2VuZGlmCi0jaWZkZWYgRkVBVF9GS01BUAotICAgIHtLX0Y4LAlmYXJzaV9mOCwJMCwJCQkwfSwKLSAgICB7S19GOSwJZmFyc2lfZjksCTAsCQkJMH0sCi0jZW5kaWYKICNpZmRlZiBGRUFUX05FVEJFQU5TX0lOVEcKICAgICB7S19GMjEsCW52X25iY21kLAlOVl9OQ0hfQUxXLAkJMH0sCiAjZW5kaWYKQEAgLTk4NywxMSArOTgzLDYgQEAKIAkJLyogYWRqdXN0IEhlYnJldyBtYXBwZWQgY2hhciAqLwogCQlpZiAocF9oa21hcCAmJiBsYW5nICYmIEtleVR5cGVkKQogCQkgICAgKmNwID0gaGttYXAoKmNwKTsKLSMgaWZkZWYgRkVBVF9GS01BUAotCQkvKiBhZGp1c3QgRmFyc2kgbWFwcGVkIGNoYXIgKi8KLQkJaWYgKHBfZmttYXAgJiYgbGFuZyAmJiBLZXlUeXBlZCkKLQkJICAgICpjcCA9IGZrbWFwKCpjcCk7Ci0jIGVuZGlmCiAjZW5kaWYKIAkgICAgfQogCmRpZmYgLS1naXQgYS9zcmMvb3B0aW9uLmMgYi9zcmMvb3B0aW9uLmMKaW5kZXggYzg4MDhiZS4uYjlmZTNkYSAxMDA2NDQKLS0tIGEvc3JjL29wdGlvbi5jCisrKyBiL3NyYy9vcHRpb24uYwpAQCAtNTQyLDExICs1NDIsNyBAQAogI2VuZGlmCiAJCQkgICAgeyhjaGFyX3UgKilGQUxTRSwgKGNoYXJfdSAqKTBMfSBTQ1RYX0lOSVR9LAogICAgIHsiYWx0a2V5bWFwIiwgICAiYWttIiwgIFBfQk9PTHxQX1ZJX0RFRiwKLSNpZmRlZiBGRUFUX0ZLTUFQCi0JCQkgICAgKGNoYXJfdSAqKSZwX2FsdGtleW1hcCwgUFZfTk9ORSwKLSNlbHNlCiAJCQkgICAgKGNoYXJfdSAqKU5VTEwsIFBWX05PTkUsCi0jZW5kaWYKIAkJCSAgICB7KGNoYXJfdSAqKUZBTFNFLCAoY2hhcl91ICopMEx9IFNDVFhfSU5JVH0sCiAgICAgeyJhbWJpd2lkdGgiLCAgImFtYnciLCAgUF9TVFJJTkd8UF9WSV9ERUZ8UF9SQ0xSLAogCQkJICAgIChjaGFyX3UgKikmcF9hbWJ3LCBQVl9OT05FLApAQCAtMTE0MSwxMSArMTEzNyw3IEBACiAJCQkgICAgKGNoYXJfdSAqKSZwX2ZpeGVvbCwgUFZfRklYRU9MLAogCQkJICAgIHsoY2hhcl91ICopVFJVRSwgKGNoYXJfdSAqKTBMfSBTQ1RYX0lOSVR9LAogICAgIHsiZmttYXAiLAkgICAgImZrIiwgICBQX0JPT0x8UF9WSV9ERUYsCi0jaWZkZWYgRkVBVF9GS01BUAotCQkJICAgIChjaGFyX3UgKikmcF9ma21hcCwgUFZfTk9ORSwKLSNlbHNlCiAJCQkgICAgKGNoYXJfdSAqKU5VTEwsIFBWX05PTkUsCi0jZW5kaWYKIAkJCSAgICB7KGNoYXJfdSAqKUZBTFNFLCAoY2hhcl91ICopMEx9IFNDVFhfSU5JVH0sCiAgICAgeyJmbGFzaCIsCSAgICAiZmwiLCAgIFBfQk9PTHxQX1ZJX0RFRiwKIAkJCSAgICAoY2hhcl91ICopTlVMTCwgUFZfTk9ORSwKQEAgLTg3MDcsNjkgKzg2OTksNiBAQAogICAgIH0KICNlbmRpZgogCi0jaWZkZWYgRkVBVF9GS01BUAotICAgIGVsc2UgaWYgKChpbnQgKil2YXJwID09ICZwX2FsdGtleW1hcCkKLSAgICB7Ci0JaWYgKG9sZF92YWx1ZSAhPSBwX2FsdGtleW1hcCkKLQl7Ci0JICAgIGlmICghcF9hbHRrZXltYXApCi0JICAgIHsKLQkJcF9oa21hcCA9IHBfZmttYXA7Ci0JCXBfZmttYXAgPSAwOwotCSAgICB9Ci0JICAgIGVsc2UKLQkgICAgewotCQlwX2ZrbWFwID0gcF9oa21hcDsKLQkJcF9oa21hcCA9IDA7Ci0JICAgIH0KLQkgICAgKHZvaWQpaW5pdF9jaGFydGFiKCk7Ci0JfQotICAgIH0KLQotICAgIC8qCi0gICAgICogSW4gY2FzZSBzb21lIHNlY29uZCBsYW5ndWFnZSBrZXltYXBwaW5nIG9wdGlvbnMgaGF2ZSBjaGFuZ2VkLCBjaGVjawotICAgICAqIGFuZCBjb3JyZWN0IHRoZSBzZXR0aW5nIGluIGEgY29uc2lzdGVudCB3YXkuCi0gICAgICovCi0KLSAgICAvKgotICAgICAqIElmIGhrbWFwIG9yIGZrbWFwIGFyZSBzZXQsIHJlc2V0IEFyYWJpYyBrZXltYXBwaW5nLgotICAgICAqLwotICAgIGlmICgocF9oa21hcCB8fCBwX2ZrbWFwKSAmJiBwX2FsdGtleW1hcCkKLSAgICB7Ci0JcF9hbHRrZXltYXAgPSBwX2ZrbWFwOwotIyBpZmRlZiBGRUFUX0FSQUJJQwotCWN1cndpbi0+d19wX2FyYWIgPSBGQUxTRTsKLSMgZW5kaWYKLQkodm9pZClpbml0X2NoYXJ0YWIoKTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIElmIGhrbWFwIHNldCwgcmVzZXQgRmFyc2kga2V5bWFwcGluZy4KLSAgICAgKi8KLSAgICBpZiAocF9oa21hcCAmJiBwX2FsdGtleW1hcCkKLSAgICB7Ci0JcF9hbHRrZXltYXAgPSAwOwotCXBfZmttYXAgPSAwOwotIyBpZmRlZiBGRUFUX0FSQUJJQwotCWN1cndpbi0+d19wX2FyYWIgPSBGQUxTRTsKLSMgZW5kaWYKLQkodm9pZClpbml0X2NoYXJ0YWIoKTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIElmIGZrbWFwIHNldCwgcmVzZXQgSGVicmV3IGtleW1hcHBpbmcuCi0gICAgICovCi0gICAgaWYgKHBfZmttYXAgJiYgIXBfYWx0a2V5bWFwKQotICAgIHsKLQlwX2FsdGtleW1hcCA9IDE7Ci0JcF9oa21hcCA9IDA7Ci0jIGlmZGVmIEZFQVRfQVJBQklDCi0JY3Vyd2luLT53X3BfYXJhYiA9IEZBTFNFOwotIyBlbmRpZgotCSh2b2lkKWluaXRfY2hhcnRhYigpOwotICAgIH0KLSNlbmRpZgotCiAjaWZkZWYgRkVBVF9BUkFCSUMKICAgICBpZiAoKGludCAqKXZhcnAgPT0gJmN1cndpbi0+d19wX2FyYWIpCiAgICAgewpAQCAtODgxNiwxMiArODc0NSw2IEBACiAJICAgIHNldF9vcHRpb25fdmFsdWUoKGNoYXJfdSAqKSJrZXltYXAiLCAwTCwgKGNoYXJfdSAqKSJhcmFiaWMiLAogCQkJCQkJCQkgICBPUFRfTE9DQUwpOwogIyBlbmRpZgotIyBpZmRlZiBGRUFUX0ZLTUFQCi0JICAgIHBfYWx0a2V5bWFwID0gMDsKLQkgICAgcF9oa21hcCA9IDA7Ci0JICAgIHBfZmttYXAgPSAwOwotCSAgICAodm9pZClpbml0X2NoYXJ0YWIoKTsKLSMgZW5kaWYKIAl9CiAJZWxzZQogCXsKQEAgLTExMDg1LDEyICsxMTAwOCw2IEBACiB7CiAgICAgY29weV93aW5vcHQoJndwX2Zyb20tPndfb25lYnVmX29wdCwgJndwX3RvLT53X29uZWJ1Zl9vcHQpOwogICAgIGNvcHlfd2lub3B0KCZ3cF9mcm9tLT53X2FsbGJ1Zl9vcHQsICZ3cF90by0+d19hbGxidWZfb3B0KTsKLSMgaWZkZWYgRkVBVF9SSUdIVExFRlQKLSMgIGlmZGVmIEZFQVRfRktNQVAKLSAgICAvKiBJcyB0aGlzIHJpZ2h0PyAqLwotICAgIHdwX3RvLT53X2ZhcnNpID0gd3BfZnJvbS0+d19mYXJzaTsKLSMgIGVuZGlmCi0jIGVuZGlmCiAjaWYgZGVmaW5lZChGRUFUX0xJTkVCUkVBSykKICAgICBicmlvcHRfY2hlY2sod3BfdG8pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8uaCBiL3NyYy9wcm90by5oCmluZGV4IDFhYjVjZjcuLmMxOWQxNTUgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by5oCisrKyBiL3NyYy9wcm90by5oCkBAIC05OSw5ICs5OSw2IEBACiAjIGlmZGVmIEZFQVRfTUVOVQogIyAgaW5jbHVkZSAibWVudS5wcm8iCiAjIGVuZGlmCi0jIGlmZGVmIEZFQVRfRktNQVAKLSMgIGluY2x1ZGUgImZhcnNpLnBybyIKLSMgZW5kaWYKICMgaWZkZWYgRkVBVF9BUkFCSUMKICMgIGluY2x1ZGUgImFyYWJpYy5wcm8iCiAjIGVuZGlmCmRpZmYgLS1naXQgYS9zcmMvcHJvdG8vZmFyc2kucHJvIGIvc3JjL3Byb3RvL2ZhcnNpLnBybwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZlMTgzNi4uMDAwMDAwMAotLS0gYS9zcmMvcHJvdG8vZmFyc2kucHJvCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLyogZmFyc2kuYyAqLwotaW50IGZrbWFwKGludCBjKTsKLWNoYXJfdSAqbHJzd2FwKGNoYXJfdSAqaWJ1Zik7Ci1jaGFyX3UgKmxyRnN3YXAoY2hhcl91ICpjbWRidWYsIGludCBsZW4pOwotY2hhcl91ICpsckZfc3ViKGNoYXJfdSAqaWJ1Zik7Ci1pbnQgY21kbF9ma21hcChpbnQgYyk7Ci1pbnQgRl9pc2FscGhhKGludCBjKTsKLWludCBGX2lzZGlnaXQoaW50IGMpOwotaW50IEZfaXNjaGFyKGludCBjKTsKLXZvaWQgZmFyc2lfZjgoY21kYXJnX1QgKmNhcCk7Ci12b2lkIGZhcnNpX2Y5KGNtZGFyZ19UICpjYXApOwotLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvc2NyZWVuLmMgYi9zcmMvc2NyZWVuLmMKaW5kZXggY2FmNmUyYy4uZDA2Y2MzZiAxMDA2NDQKLS0tIGEvc3JjL3NjcmVlbi5jCisrKyBiL3NyYy9zY3JlZW4uYwpAQCAtMTAyNDcsMTAgKzEwMjQ3LDYgQEAKICNpZmRlZiBGRUFUX1JJR0hUTEVGVAogCQlpZiAocF9oa21hcCkKIAkJICAgIG1zZ19wdXRzX2F0dHIoXygiIEhlYnJldyIpLCBhdHRyKTsKLSMgaWZkZWYgRkVBVF9GS01BUAotCQlpZiAocF9ma21hcCkKLQkJICAgIG1zZ19wdXRzX2F0dHIoZmFyc2lfdGV4dF81LCBhdHRyKTsKLSMgZW5kaWYKICNlbmRpZgogI2lmZGVmIEZFQVRfS0VZTUFQCiAJCWlmIChTdGF0ZSAmIExBTkdNQVApCmRpZmYgLS1naXQgYS9zcmMvc2VhcmNoLmMgYi9zcmMvc2VhcmNoLmMKaW5kZXggZGY3MDY3Yi4uOWE0N2VkNCAxMDA2NDQKLS0tIGEvc3JjL3NlYXJjaC5jCisrKyBiL3NyYy9zZWFyY2guYwpAQCAtMTQ3NywxMiArMTQ3Nyw4IEBACiAJICAgIH0KIAl9CiAKLSNpZmRlZiBGRUFUX0ZLTUFQCS8qIHdoZW4gaW4gRmFyc2kgbW9kZSwgcmV2ZXJzZSB0aGUgY2hhcmFjdGVyIGZsb3cgKi8KLQlpZiAocF9hbHRrZXltYXAgJiYgY3Vyd2luLT53X3BfcmwpCi0JICAgICBsckZzd2FwKHNlYXJjaHN0ciwwKTsKLSNlbmRpZgotCi0JYyA9IHNlYXJjaGl0KGN1cndpbiwgY3VyYnVmLCAmcG9zLCBOVUxMLCBkaXJjID09ICcvJyA/IEZPUldBUkQgOiBCQUNLV0FSRCwKKwljID0gc2VhcmNoaXQoY3Vyd2luLCBjdXJidWYsICZwb3MsIE5VTEwsCisJCQkJCSAgICAgIGRpcmMgPT0gJy8nID8gRk9SV0FSRCA6IEJBQ0tXQVJELAogCQlzZWFyY2hzdHIsIGNvdW50LCBzcGF0c1swXS5vZmYuZW5kICsgKG9wdGlvbnMgJgogCQkgICAgICAgKFNFQVJDSF9LRUVQICsgU0VBUkNIX1BFRUsgKyBTRUFSQ0hfSElTCiAJCQkrIFNFQVJDSF9NU0cgKyBTRUFSQ0hfU1RBUlQKQEAgLTI5NzYsMTAgKzI5NzIsNiBAQAogICAgIGludAkgICAgYzsKIAogICAgIGMgPSBnY2hhcl9jdXJzb3IoKTsKLSNpZmRlZiBGRUFUX0ZLTUFQCS8qIHdoZW4gJ2FrbScgKEZhcnNpIG1vZGUpLCB0YWtlIGNhcmUgb2YgRmFyc2kgYmxhbmsgKi8KLSAgICBpZiAocF9hbHRrZXltYXAgJiYgYyA9PSBGX0JMQU5LKQotCXJldHVybiAwOwotI2VuZGlmCiAgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0JyB8fCBjID09IE5VTCkKIAlyZXR1cm4gMDsKICAgICBpZiAoZW5jX2RiY3MgIT0gMCAmJiBjID4gMHhGRikKZGlmZiAtLWdpdCBhL3NyYy9zdHJ1Y3RzLmggYi9zcmMvc3RydWN0cy5oCmluZGV4IDQ0NjRjNGIuLmZkZWY4MTEgMTAwNjQ0Ci0tLSBhL3NyYy9zdHJ1Y3RzLmgKKysrIGIvc3JjL3N0cnVjdHMuaApAQCAtMjk1MiwxMCArMjk1Miw2IEBACiAgICAgZGljdF9UCSp3X3ZhcnM7CS8qIGludGVybmFsIHZhcmlhYmxlcywgbG9jYWwgdG8gd2luZG93ICovCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoRkVBVF9SSUdIVExFRlQpICYmIGRlZmluZWQoRkVBVF9GS01BUCkKLSAgICBpbnQJCXdfZmFyc2k7CS8qIGZvciB0aGUgd2luZG93IGRlcGVuZGVudCBGYXJzaSBmdW5jdGlvbnMgKi8KLSNlbmRpZgotCiAgICAgLyoKICAgICAgKiBUaGUgd19wcmV2X3BjbWFyayBmaWVsZCBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgd2UgcmVhbGx5IGRpZCBqdW1wIHRvCiAgICAgICogYSBuZXcgbGluZSBhZnRlciBzZXR0aW5nIHRoZSB3X3BjbWFyay4gIElmIG5vdCwgdGhlbiB3ZSByZXZlcnQgdG8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL01ha2VfYWxsLm1hayBiL3NyYy90ZXN0ZGlyL01ha2VfYWxsLm1hawppbmRleCA5MmUyYWUzLi43Y2M1ZTdlIDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci9NYWtlX2FsbC5tYWsKKysrIGIvc3JjL3Rlc3RkaXIvTWFrZV9hbGwubWFrCkBAIC0xMTgsNyArMTE4LDYgQEAKIAl0ZXN0X2V4cGFuZF9mdW5jIFwKIAl0ZXN0X2V4cHIgXAogCXRlc3RfZXhwcl91dGY4IFwKLQl0ZXN0X2ZhcnNpIFwKIAl0ZXN0X2ZlZWRrZXlzIFwKIAl0ZXN0X2ZpbGVfcGVybSBcCiAJdGVzdF9maWxlX3NpemUgXApAQCAtMzE4LDcgKzMxNyw2IEBACiAJdGVzdF9leGlzdHMucmVzIFwKIAl0ZXN0X2V4aXN0c19hdXRvY21kLnJlcyBcCiAJdGVzdF9leGl0LnJlcyBcCi0JdGVzdF9mYXJzaS5yZXMgXAogCXRlc3RfZmlsZV9zaXplLnJlcyBcCiAJdGVzdF9maWxlY2hhbmdlZC5yZXMgXAogCXRlc3RfZmluZF9jb21wbGV0ZS5yZXMgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9mYXJzaS52aW0gYi9zcmMvdGVzdGRpci90ZXN0X2ZhcnNpLnZpbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNmYTAyNC4uMDAwMDAwMAotLS0gYS9zcmMvdGVzdGRpci90ZXN0X2ZhcnNpLnZpbQorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0iIFNpbXBsaXN0aWMgdGVzdGluZyBvZiBGYXJzaSBtb2RlLgotIiBOb3RlOiBtdXN0IGJlIGVkaXRlZCB3aXRoIGxhdGluMSBlbmNvZGluZy4KLQotaWYgIWhhcygnZmFyc2knKQotICBmaW5pc2gKLWVuZGlmCi0iIEZhcnNpIHVzZXMgYSBzaW5nbGUgYnl0ZSBlbmNvZGluZy4KLXNldCBlbmM9bGF0aW4xCi0KLWZ1bmMgVGVzdF9mYXJzaV90b2dnbGUoKQotICBuZXcKLQotICBzZXQgYWx0a2V5bWFwCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDAsICZma21hcCkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoMCwgJnJsKQotICBjYWxsIGZlZWRrZXlzKCJcPEY4PiIsICd4JykKLSAgY2FsbCBhc3NlcnRfZXF1YWwoMSwgJmZrbWFwKQotICBjYWxsIGFzc2VydF9lcXVhbCgxLCAmcmwpCi0gIGNhbGwgZmVlZGtleXMoIlw8Rjg+IiwgJ3gnKQotICBjYWxsIGFzc2VydF9lcXVhbCgwLCAmZmttYXApCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDAsICZybCkKLQotICBzZXQgcmwKLSAgIiBjb252ZXJzaW9uIGZyb20gRmFyc2kgMzM0MiB0byBGYXJzaSBWSU0uCi0gIGNhbGwgc2V0bGluZSgxLCBqb2luKG1hcChyYW5nZSgweDgwLCAweGZmKSwgJ25yMmNoYXIodjp2YWwpJyksICcnKSkKLSAgY2FsbCBmZWVka2V5cygiXDxGOT4iLCAneCcpCi0gIGxldCBleHAgPSBbMHhmYywgMHhmOCwgMHhjMSwgMHhjMywgMHhjNCwgMHhjNSwgMHhjNiwgMHhjNywKLQkgICBcIDB4YzgsIDB4YzksIDB4Y2EsIDB4ZDAsIDB4ZDEsIDB4ZDIsIDB4ZDMsIDB4ZDYsCi0JICAgXCAweGQ2LCAweGQ2LCAweGQ3LCAweGQ3LCAweGQ3LCAweGQ4LCAweGQ5LCAweGRhLAotCSAgIFwgMHhkYiwgMHhkYywgMHhkYywgMHhjMSwgMHhkZCwgMHhkZSwgMHhlMCwgMHhlMCwKLQkgICBcIDB4ZTEsIDB4YTAsIDB4YTEsIDB4YTIsIDB4YTMsIDB4YTQsIDB4YTUsIDB4YTYsCi0JICAgXCAweGE3LCAweGE4LCAweGE5LCAweGFhLCAweGFiLCAweGFjLCAweGFkLCAweGFlLAotCSAgIFwgMHhhZiwgMHhiMCwgMHhiMSwgMHhiMiwgMHhiMywgMHhiNCwgMHhiNSwgMHhiNiwKLQkgICBcIDB4YjcsIDB4YjgsIDB4YjksIDB4YmEsIDB4YmIsIDB4YmMsIDB4YmQsIDB4YmUsCi0JICAgXCAweGJmLCAweGMwLCAweGMxLCAweGMyLCAweGMzLCAweGM0LCAweGM1LCAweGM2LAotCSAgIFwgMHhjNywgMHhjOCwgMHhjOSwgMHhjYSwgMHhjYiwgMHhjYywgMHhjZCwgMHhjZSwKLQkgICBcIDB4Y2YsIDB4ZDAsIDB4ZDEsIDB4ZDIsIDB4ZDMsIDB4ZDQsIDB4ZDUsIDB4ZDYsCi0JICAgXCAweGQ3LCAweGQ4LCAweGQ5LCAweGRhLCAweGRiLCAweGRjLCAweGRkLCAweGRlLAotCSAgIFwgMHhkZiwgMHhlMCwgMHhlMSwgMHhlMiwgMHhlMywgMHhlNCwgMHhlNSwgMHhlNiwKLQkgICBcIDB4ZTcsIDB4ZTgsIDB4ZTksIDB4ZWEsIDB4ZWIsIDB4ZmIsIDB4ZmIsIDB4ZmUsCi0JICAgXCAweGZlLCAweGYwLCAweGYxLCAweGYyLCAweGYzLCAweGY0LCAweGY1LCAweGY2LAotCSAgIFwgMHhmNywgMHhmOCwgMHhmOSwgMHhmYSwgMHhmYiwgMHhmYywgMHhmZCwgMHhmZSwgMHhlMSwKLSAgICAgICAgICAgXCBdCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKGpvaW4obWFwKGV4cCwgJ25yMmNoYXIodjp2YWwpJyksICcnKSwgZ2V0bGluZSgxKSkKLQotICAiIGNvbnZlcnNpb24gZnJvbSBGYXJzaSBWSU0gdG8gRmFyc2kgMzM0Mi4KLSAgY2FsbCBzZXRsaW5lKDEsIGpvaW4obWFwKHJhbmdlKDB4ODAsIDB4ZmYpLCAnbnIyY2hhcih2OnZhbCknKSwgJycpKQotICBjYWxsIGZlZWRrZXlzKCJcPEY5PiIsICd4JykKLSAgbGV0IGV4cCA9IFsweGZjLCAweGY4LCAweGMxLCAweDgzLCAweDg0LCAweDg1LCAweDg2LCAweDg3LAotCSAgIFwgMHg4OCwgMHg4OSwgMHg4YSwgMHg4YiwgMHg4YywgMHg4ZCwgMHg4ZSwgMHg5MCwKLQkgICBcIDB4OTAsIDB4OTAsIDB4OTIsIDB4OTMsIDB4OTMsIDB4OTUsIDB4OTYsIDB4OTcsCi0JICAgXCAweDk4LCAweGRjLCAweDlhLCAweDliLCAweDljLCAweDllLCAweDllLCAweGZmLAotCSAgIFwgMHhhMCwgMHhhMSwgMHhhMiwgMHhhMywgMHhhNCwgMHhhNSwgMHhhNiwgMHhhNywKLQkgICBcIDB4YTgsIDB4YTksIDB4YWEsIDB4YWIsIDB4YWMsIDB4YWQsIDB4YWUsIDB4YWYsCi0JICAgXCAweGIwLCAweGIxLCAweGIyLCAweGIzLCAweGI0LCAweGI1LCAweGI2LCAweGI3LAotCSAgIFwgMHhiOCwgMHhiOSwgMHhiYSwgMHhiYiwgMHhiYywgMHhiZCwgMHhiZSwgMHhiZiwKLQkgICBcIDB4YzAsIDB4YzEsIDB4YzIsIDB4ODMsIDB4ODQsIDB4ODUsIDB4ODYsIDB4ODcsCi0JICAgXCAweDg4LCAweDg5LCAweDhhLCAweGNiLCAweGNjLCAweGNkLCAweGNlLCAweGNmLAotCSAgIFwgMHg4YiwgMHg4YywgMHg4ZCwgMHg4ZSwgMHhkNCwgMHhkNSwgMHg5MCwgMHg5MywKLQkgICBcIDB4OTUsIDB4OTYsIDB4OTcsIDB4OTgsIDB4OTksIDB4OWIsIDB4OWMsIDB4ZGYsCi0JICAgXCAweDlkLCAweGZmLCAweGUyLCAweGUzLCAweGU0LCAweGU1LCAweGU2LCAweGU3LAotCSAgIFwgMHhlOCwgMHhlOSwgMHhlYSwgMHhlYiwgMHhlYywgMHhlYywgMHhlZSwgMHhlZiwKLQkgICBcIDB4ZjAsIDB4ZjEsIDB4ZjIsIDB4ZjMsIDB4ZjQsIDB4ZjUsIDB4ZjYsIDB4ZjcsCi0JICAgXCAweGY4LCAweGY5LCAweGZhLCAweGVjLCAweDgwLCAweGZkLCAweGVlLCAweGZmLAotICAgICAgICAgICBcIF0KLSAgY2FsbCBhc3NlcnRfZXF1YWwoam9pbihtYXAoZXhwLCAnbnIyY2hhcih2OnZhbCknKSwgJycpLCBnZXRsaW5lKDEpKQotCi0gIGJ3aXBlIQotZW5kZnVuYwotCi1mdW5jIFRlc3RfZmFyc2lfbWFwKCkKLSAgbmV3Ci0KLSAgc2V0IGFsdGtleW1hcAotICBzZXQgcmwKLSAgIiBSSFMgb2YgbWFwcGluZyBpcyByZXZlcnNlZC4KLSAgaW1hcCB4eXogYWJjCi0gIGNhbGwgZmVlZGtleXMoImF4eXpcPEVzYz4iLCAndHgnKQotICBjYWxsIGFzc2VydF9lcXVhbCgnY2JhJywgZ2V0bGluZSgxKSkKLQotICBzZXQgbm9ybAotICBpdW5tYXAgeHl6Ci0gIHNldCBub2FsdGtleW1hcAotICBid2lwZSEKLWVuZGZ1bmMKLQotZnVuYyBUZXN0X2lucHV0X2ZhcnNpKCkKLSAgbmV3Ci0gIHNldGxvY2FsIHJpZ2h0bGVmdCBma21hcAotICAiIG51bWJlcnMgc3dpdGNoIGlucHV0IGRpcmVjdGlvbgotICBjYWxsIGZlZWRrZXlzKCJhYWJjMDEyMzQ1Njc4OS4rLV4lIz14eXpcPEVzYz4iLCAndHgnKQotICBjYWxsIGFzc2VydF9lcXVhbCgiXHg4Y8zOva6lqq2rprm4t7a1tLOysbDUXHg5M9UiLCBnZXRsaW5lKCcuJykpCi0KLSAgIiBhbGwgbm9uLW51bWJlciBzcGVjaWFsIGNoYXJzIHdpdGggc3BhY2VzCi0gIGNhbGwgZmVlZGtleXMoIm9CIEUgRiBIIEkgSyBMIE0gTyBQIFEgUiBUIFUgVyBZIGAgISAgQCAjICQgJSBeICYgKiAoKSAtIF8gPSArIFxcIHwgOiBcIiAuICAvIDwgPiA/IFw8RXNjPiIsICd0eCcpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCKhoPSg+qDAoPag5qDnoMKgW6BdoPeg86DyoPCg9aDxoKKgo6Cgp6CuoKSgpaCqoKyg6KCoqaCtoOmgvaCroOug6qC6oLugpqCgr6C+oLygv6AiLCBnZXRsaW5lKCcuJykpCi0KLSAgIiBhbGwgbm9uLW51bWJlciBzcGVjaWFsIGNoYXJzIHdpdGhvdXQgc3BhY2VzCi0gIGNhbGwgZmVlZGtleXMoIm9CRUZISUtMTU9QUVJUVVdZYCFAIyQlXiYqKCktXz0rXFx8OlwiLi88Pj9cPEVzYz4iLCd0eCcpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCKh9PrA9ubnwltd9/Py8PXxoqOnrqSlqqzoqKmt6b2r6+q6u6avvry/IiwgZ2V0bGluZSgnLicpKQotCi0gICIgYWxsIGxldHRlciBjaGFycyB3aXRoIHNwYWNlcwotICBjYWxsIGZlZWRrZXlzKCJvYSBBIGIgYyBDIGQgRCBlIGYgZyBHIGggaSBqIEogayBsIG0gbiBOIG8gcCBxIHIgcyBTIHQgdSB2IFYgdyB4IFggeSB6IFogOyBcICwgWyBdIFw8RXNjPiIsICd0eCcpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCLRoPmgzKDOoM+g4aD+oMagw6DcoPigwaDgoMWg/KDeoN2gxKDLoMugyqDJoNOg2aDQoPug2KDWoM2gzaDSoNSg1KDXoNWg/aDaoKDfoMegyKAiLCBnZXRsaW5lKCcuJykpCi0KLSAgIiBhbGwgbGV0dGVyIGNoYXJzIHdpdGhvdXQgc3BhY2VzCi0gIGNhbGwgZmVlZGtleXMoIm9hQWJjQ2REZWZnR2hpakprbG1uTm9wcXJzU3R1dlZ3eFh5elo7XCxbXVw8RXNjPiIsICd0eCcpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKCJceDhj+czOz1x4OWbuXHg4Nlx4ODPc+MFceDlkXHg4NVx4ODBceDljXHg5Ylx4ODTLy1x4OGFceDg5XHg4ZVx4OTZceDhi7Fx4OTVceDkwzc1ceDhk1NRceDkz1f1ceDk331x4ODdceDg4IiwgZ2V0bGluZSgnLicpKQotCi0gIGJ3aXBlIQotZW5kZnVuYwotCi1mdW5jIFRlc3RfY29tbWFuZF9saW5lX2ZhcnNpKCkKLSAgc2V0IGFsbG93cmV2aW5zIGFsdGtleW1hcAotCi0gICIgbGV0dGVyIGNoYXJhY3RlcnMgd2l0aCBzcGFjZXMKLSAgY2FsbCBmZWVka2V5cygiOlwiXDxDLV8+YSBBIGIgYyBDIGQgRCBlIGYgZyBHIGggaSBqIEogayBsIG0gbiBOIG8gcCBxIHIgcyBTIHQgdSB2IFYgdyB4IFggeSB6IFogOyBcXCAsIFsgXVw8Q1I+IiwgJ3R4JykKLSAgY2FsbCBhc3NlcnRfZXF1YWwoIlwiXHg4OKDHoN+g66DaoNWg1aDXoNSg1KDSoM2gzaDWoNig+6DQoNmg06DJoMqgy6DLoMSg3aDeoPygxaDgoMGg+KDcoMOgxqD+oOGgz6DOoMyg+aDRIiwgZ2V0cmVnKCc6JykpCi0gCi0gICIgbGV0dGVyIGNoYXJhY3RlcnMgd2l0aG91dCBzcGFjZXMKLSAgY2FsbCBmZWVka2V5cygiOlwiXDxDLV8+YUFiY0NkRGVmZ0doaWpKa2xtbk5vcHFyc1N0dXZWd3hYeXpaO1xcLFtdXDxDUj4iLCAndHgnKQotICBjYWxsIGFzc2VydF9lcXVhbCgiXCJceDg4XHg4N9/r2tXVXHg5M9TUXHg4ZM3NXHg5MFx4OTXsXHg4Ylx4OTZceDhlXHg4OVx4OGHLy1x4ODRceDliXHg5Y1x4ODBceDg1XHg5ZMH43Fx4ODNceDg27lx4OWbPzsz5XHg4YyIsIGdldHJlZygnOicpKQotIAotICAiIG90aGVyIGNoYXJhY3RlcnMgd2l0aCBzcGFjZXMKLSAgY2FsbCBmZWVka2V5cygiOlwiXDxDLV8+MCAxIDIgMyA0IDUgNiA3IDggOSBgIC4gICEgIFwiICQgJSBeICYgLyAoKSA9IFxcID8gICsgLSBfICogOiAjIH4gQCA8ID4geyB9IHwgQiBFIEYgSCBJIEsgTCBNIE8gUCBRIFIgVCBVIFcgWVw8Q1I+IiwgJ3R4JykKLSAgY2FsbCBhc3NlcnRfZXF1YWwoIlwi8aD1oPCg8qDzoPegXaBboMKg56DmoPagwKD6oPSgoaDqoH2ge6C8oL6gp6B+oK6guqDooOmgraCroKC/oOugvaCpqKCvoKygqqCloKSgu6Cgo6CgpqCioLmguKC3oLagtaC0oLOgsqCxoLAiLCBnZXRyZWcoJzonKSkKLQotICAiIG90aGVyIGNoYXJhY3RlcnMgd2l0aG91dCBzcGFjZXMKLSAgY2FsbCBmZWVka2V5cygiOlwiXDxDLV8+MDEyMzQ1Njc4OWAuIVwiJCVeJi8oKT1cXD8rLV8qOiN+QDw+e318QkVGSElLTE1PUFFSVFVXWVw8Q1I+IiwgJ3R4JykKLSAgY2FsbCBhc3NlcnRfZXF1YWwoIlwi8fXw8vP3XVvC5+b2wPr0oep9e7y+p36uuujprau/672pqK+sqqWku6Omorm4t7a1tLOysbAiLCBnZXRyZWcoJzonKSkKLQotICBzZXQgbm9hbGxvd3JldmlucyBub2FsdGtleW1hcAotZW5kZnVuYwpkaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uYyBiL3NyYy92ZXJzaW9uLmMKaW5kZXggMDBjNjNlNS4uYWE3M2ViZCAxMDA2NDQKLS0tIGEvc3JjL3ZlcnNpb24uYworKysgYi9zcmMvdmVyc2lvbi5jCkBAIC0yNTUsMTEgKzI1NSw3IEBACiAjZWxzZQogCSItZXh0cmFfc2VhcmNoIiwKICNlbmRpZgotI2lmZGVmIEZFQVRfRktNQVAKLQkiK2ZhcnNpIiwKLSNlbHNlCiAJIi1mYXJzaSIsCi0jZW5kaWYKICNpZmRlZiBGRUFUX1NFQVJDSFBBVEgKIAkiK2ZpbGVfaW5fcGF0aCIsCiAjZWxzZQpAQCAtNzg0LDYgKzc4MCw4IEBACiBzdGF0aWMgaW50IGluY2x1ZGVkX3BhdGNoZXNbXSA9CiB7ICAgLyogQWRkIG5ldyBwYXRjaCBudW1iZXIgYmVsb3cgdGhpcyBsaW5lICovCiAvKiovCisgICAgOTMyLAorLyoqLwogICAgIDkzMSwKIC8qKi8KICAgICA5MzAsCmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93LmMKaW5kZXggN2RjMzg0OC4uYzRiNTQzZCAxMDA2NDQKLS0tIGEvc3JjL3dpbmRvdy5jCisrKyBiL3NyYy93aW5kb3cuYwpAQCAtMzQ0NSwxMiArMzQ0NSw2IEBACiAgICAgd3AtPndfdG9wZmlsbCA9IDA7CiAjZW5kaWYKICAgICB3cC0+d19ib3RsaW5lID0gMjsKLSNpZmRlZiBGRUFUX0ZLTUFQCi0gICAgaWYgKHdwLT53X3BfcmwpCi0Jd3AtPndfZmFyc2kgPSBXX0NPTlYgKyBXX1JfTDsKLSAgICBlbHNlCi0Jd3AtPndfZmFyc2kgPSBXX0NPTlY7Ci0jZW5kaWYKICNpZmRlZiBGRUFUX1NZTl9ITAogICAgIHdwLT53X3MgPSAmd3AtPndfYnVmZmVyLT5iX3M7CiAjZW5kaWYK